2016-08-30 13 views
-1

私は多くのサブディレクトリを持つディレクトリを持っています。繰り返し名前を付けたjpgファイルを再帰的に検索したいと思います。Bash - 名前に反復番号を含むファイルを見つける

明確化 - ファイルには名前があります。 300x300、正方形の画像のみを表示したいサイズは異なります(500x500,1200x1200など)。

私はMac OSを使用しています。

答えて

1

あなたは正規表現でgnu findを使用することができます。

find . -regextype posix-extended -iregex '.*\b([0-9]+)x\1\.jpg$' 

([0-9]+)x\1xによって分離された同じ数字の繰り返しを保証します。 OSX(BSD)あなたが使用することができ、見つけるには

find . -iregex '.*[[:<:]]\([0-9][0-9]*\)x\1\.jpg$' 
+0

OS XにはBSD 'find'があり、GNU' find'ではありません。 '-regextype'はありません。 – Barmar

+0

実際に私は両方を持っています。 'home brew'を使って' gnu find'を実行しましたが、 'gnu find'で動作するという答えを追加しました。 – anubhava

+0

これは正確に 'path/to/300x300.jpg'を探します。おそらくOPの後にあるでしょう 'path/to/picture-name-300x300.jpg'を許可する正規表現を捨てなければなりません。 –

1

パイプの最初の部分は、ツリー内のjpgファイルのすべてを検索します。パイプの第2部分は、これらの結果をフィルタリングします。

find . -type f -name '*.jpg' | egrep '[^\d](\d+)x\1' 

バリエーションをサポートする正規表現を拡張する方法がありますが、説明によればこれで十分です。

+0

'grep -E'または' egrep'を使う必要があります。 – Barmar

+0

@barmar私の 'grep'は' egrep'にエイリアスされています。 Mea culpa。 – wpcarro

+2

好奇心旺盛:私のテスト名 '。/ b3/file-303x304.jpg'と '。/ b3/file-919x920.jpg'を選択しました。それは正しいです:最初の3x3と2番目の9x9と一致しますが、それはすぐにそれが期待されることは明らかではありません。 –

関連する問題