web-dev-qa-db-ja.com

ファイル名に特定の文字列が含まれるすべてのファイルを削除しますか?

wordpressテーマを変更しました。古いものはサーバー上に非常に多くのイメージを作成しました。私の新しいテーマはそれらを必要としないので、すべて削除したいです。どうやってやるの?

例えば:
デフォルト画像:12_angry_men_lone_holdout.jpg

削除したい:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

Digitaloceanを使用して、Ubuntu 13.10。

21
Ibrahim Mumcu

同じフォルダー内にある場合は、*ワイルドカードを使用してそれを実現します。

rm *text*

ここで、textは、ファイル名に含まれる文字列です。

20
myhau

findを使用して、名前に「テキスト」が含まれるファイルを再帰的に検索および削除します。

find -type f -name '*text*' -delete

また、その前にfind -type f -name '*text*'-deleteなし)を実行して、削除する予定のないファイルを削除しないようにすることもできます。


実際、検索文字列の任意の場所にワイルドカードを配置できるため、-name '12_angry_men_lone_holdout-*.jpg'の方が適している場合があります。

27
n.st

これを試して:

rm -rf 12_angry_men_lone_holdout-*

これにより、keep 12_angry_men_lone_holdout.jpgが実行され、サイズのあるファイルが削除されます(290x166)

そして覚えておいてください

rm -rf 12_angry_men_lone_holdout.*

必要なデフォルトファイルも削除されます。

1
Aneesh
find . -type f -name '*[0-9]x[0-9]*' -delete

これを親ディレクトリで実行します。これにより、数字の後に「x」文字が続き、名前に別の数字が続くすべてのファイルが削除されます。

名前に上記のパターンが含まれている場合は、元のファイルも削除される可能性がありますので、注意してください。最初に「-delete」なしで実行して、そのような名前のファイルがあるかどうかを確認します。その場合は、より制限的なパターンを見つける必要があります。

0
Tamas