.tif
入れ子になったディレクトリが与えられると、拡張子が 、 、.TIF
。すべての.tiff
tifファイルをリストしたいです.TIFF
。
現在私が使用している
find . -type f -iname *.TIF -print ; find . -type f -iname *.TIFF -print;
を使用すると-iname
大文字と小文字を区別できますが、ディレクトリを2回繰り返してファイルを含む.tif
ファイルをインポートします.tiff
。もっと良い方法がありますか?たぶん支柱の拡張が必要かもしれませんか?
なぜダメなの*.tif*
?
場合によっては、私のディレクトリに.tif.aux.xml
tiffの横に拡張子を持つ補助ファイルを含めることができます。私はそれらを無視したいと思います。
答え1
find
「または」分離をサポートします-o
。
find . -type f \( -iname \*.tif -o -iname \*.tiff \)
*.tif
これにより、名前は大文字と小文字が無視され、一致するすべてのファイルが一覧表示されます*.tiff
。
-print
は基本操作なので、ここで指定する必要はありません。*
、エスケープされているので(
、)
シェルで意味を失います。
答え2
を使用するよりも短いです-o
。代わりに正規表現を使用してください。
find . -type f -iregex '.*\.tiff?'
中かっこ拡張はそうではありませんグローバルマッチなので、一緒に使うことはできません-(i)name
。
答え3
findコマンドを実行したいツリーの最上位ディレクトリにあると仮定し、目的の出力を取得する簡単な方法は次のとおりです。免責事項:高度な使用または照会シナリオには適していません。
find -type f |egrep '.tif$|.tiff$|.TIF$|.TIFF$'
説明する:
- デフォルトでは、gnu findは現在のディレクトリに再帰し、出力をstdoutとして印刷します(ドットまたは-printオプションは必要ありません)。
- egrep は拡張正規表現を受け入れます。末尾の$は、ファイル名がtifで終わる必要があることを意味します。したがって、foo.tif.barは一致すると見なされません。
- このパイプはどのパターンにも一致するORです。