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


22

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

例:
デフォルトの画像: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。


端末タイプでman rmrmコマンドのマニュアルページを表示します。
hmayag 14


これらの画像は、WorldPressメディアライブラリにアップロードされた画像から自動的に作成されたサムネイルのようです。その場合、サーバー上のターミナルでこれらのファイルを削除しないでください。WordPress管理ページを開き、「設定」>「メディア」を開きます。必要なサムネイル画像サイズをそこに設定します。次に、プラグイン「サムネイル を再生成」をインストールし、すべてのサムネイルを再作成します(メディアライブラリ内の画像の量によっては、数分かかる場合があります)。
ボブ

回答:


22

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

rm *text*

textファイル名に含まれる文字列はどこにあります。


実際には1つのディレクトリではありませんが、今のところは1つずつ実行できます。ありがとうございました!
イブラヒムムムク14

27

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

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

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


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


ファイルパスを表現することは必要ではありません
のAvinashラジ

@AvinashRaj最初のパラメーターがパスでない場合、find現在の作業ディレクトリを検索します。
n.st 14

誰かが入れた。現在の作業ディレクトリ内を検索するためのfindの直後。
アビナッシュラジ14

1
@AvinashRajそれは冗長です。とおりman findパスが指定されていない場合、現在のディレクトリが使用されます。
n.st 14

@AvinashRaj 、実際にパスを必要とするPOSIX仕様を示してます。デフォルトは、GNU findによって追加された変更です。これがUnixとLinuxの場合、答えに追加しますが、UbuntuにはデフォルトでGNU findが付属しているため、必要以上に新参者を混乱させたくないです。;)find.
n.st

1

これを試して:

rm -rf 12_angry_men_lone_holdout-*

これによりkeep 12_angry_men_lone_holdout.jpg、寸法(290x166)のファイルが削除されます。

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

rm -rf 12_angry_men_lone_holdout.*

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


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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.