2017-08-31 3 views
0

私は約200のイメージファイル名のリストを持っています。 Webサーバー上には、1つのディレクトリ内のサブフォルダ構造内にこれらのファイル名を持つファイルのインスタンスが複数存在します。Webサーバー上のサブフォルダ内のファイル名のリストを検索して削除します

これらのファイル名のすべてのインスタンスを検索して削除するコマンドはありますか?ファイル名

  • 画像488363450-1.jpg
  • somenameの-186758341-1.jpg
  • randomname-588968004-1.jpg
  • blabla124405236-1-1の

    例。 JPG

  • someimage_MEDIUM.jpg

答えて

0

ファイル「badFiles」ファイルは、削除したいファイル名のリストを保持し、彼らは可能性がある中で「myDirsは」サブディレクトリのリストを保持していると仮定すると、以下の作業をする必要があります:

for file in `cat badFiles` 
do 
    for dir in `cat myDirs` 
    do 
    [ -f ${dir}/${file} ] && rm ${dir}/${file} 
    done 
done 

ディレクトリのリストは、次のmyDirsファイルを作成せずに動作するはずです、あなたの現在の作業ディレクトリからすべてのサブディレクトリが含まれている場合:

01 SSHを介してこれを呼び出すに

、あなたは(この例では、私は、ロケーション$ {HOME} /bin/killImages.shを使用します)ファイルに以下のスクリプトの内容を置くことができます。

編集〜 /bin/killImages.shと入力し、以下の内容を使用してください。完了したら、書き込みして保存します。

#!/bin/bash 
cd $1 
for file in `cat ~/badFiles` 
do 
    for dir in * 
    do 
    [ -d ${dir} ] && [ -f ${dir}/${file} ] && rm ${dir}/${file} 
    done 
done 

その後、あなたのスクリプトを実行可能にする:あなたは、

ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html" 

を手動で最初の悪いファイルのリストをアップロードする必要がある場合になります。実行し、ローカルシステム上で次に

chmod 700 ~/bin/killImages.sh 

をスクリプトを開始する前にこれを適切な場所にスキャンしてください:

scp badFiles <user>@<hostname>:. 
ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html" 

これが役に立ちます。

+0

それは試してみると良い見えます! – blablaman4000

+0

badFilesのファイルの種類。それは何かの行ごとに1つの.txtファイルですか? @ paul-h – blablaman4000

+0

すべてのファイルが "image *"または "image * jpg"のパターンと一致する場合、私はLucianがfindを利用することを提案します。はい、これはすべてのサブディレクトリを走査します。それがあなたが望むものではない場合(あなたは1つのレベルを開始ディレクトリよりも深くしたい)、これは-depthフラグで制御できます。 –

0
find /path/to/files -type f -name "image*" -exec rm -f {} \; 
  • "FILE-TO-FIND":ファイルパターン。
  • exec rm -rf {} \; :ファイルパターンに一致するすべてのファイルを削除します。
  • f:ファイルのみが一致し、ディレクトリ名は含まれません。

(これはhereから実際にある)

+0

サブフォルダを介して表示されますか? – blablaman4000

+0

はい、サブフォルダにも表示されます – Lucian

+0

は一致するパターンがないため、私にとってはうまく動作しません。そのファイルのリストだけ – blablaman4000

関連する問題