0

ちょうど 40,000 枚以上の画像を含むディレクトリを渡されました。このディレクトリには、すべてのファイルの 3 つのバージョンが含まれているため、サーバー間で転送する必要がありました。

bash (OSX ターミナル) を使用してすべてのファイルを見つけて削除 (rm) する方法を探しています。たとえば、.jpg (または .gif、または . png、または .bmp など) 拡張子。

したがって、明確にするために、次のファイルがあります。

1.jpg
1_web.jpg
1_thumb.jpg
2.gif
2_web.gif
2_thumb.gif
etc.

そして「1.jpg」や「2.gif」などだけ残してほしい。

過去に拡張機能の名前を変更することはできましたが、私のコマンドライン fu はかなり弱く、再利用可能なものを見つけようとしています (これを数回行う必要があります)。このプロジェクトの継続的な移行スクリプトに取り組んでいるため)。

編集:これについてもう少し作業した後、回避しなければならない rm と xargs のいくつかの奇妙な制限を見つけました。私は基本的に以下の受け入れられた答えを適応させ、最終的には次のようになりました:

$ find . -name '*_thumb.*' -print0 | xargs -0 rm -f
$ find . -name '*_web.*' -print0 | xargs -0 rm -f

今では約 10,000 ファイルまで減りました。ウェブ上でファイルをプッシュするという点ではかなりの節約です!

4

2 に答える 2

2

1つの(比較的堅牢な)オプションは、実行することです

find . -iregex ".*\(_web\|_thumb\)\.\(jpg\|png\|bmp\)" -delete

ディレクトリに画像ファイル以外のものがないと仮定すると、別の(より単純な)オプションは実行することです

 rm *_web.* *_thumb.*

警告:これにより、my_web.file.jpgのような名前のファイルも削除されるため、安全にプレイしたい場合は、に依存するのではなく、すべての拡張機能を追加する必要があります。 3文字の長さにするには、*_thumb。???のようなものを使用できます。

于 2011-07-27T06:07:50.430 に答える
0

目の前にMACやUNIX端末はありませんが、次のようなものがうまくいくと思います

rm *_web.jpg
rm *_web.jpg
rm *_thumb.gif
于 2011-07-27T06:10:29.497 に答える