Bash - サブディレクトリを繰り返してファイルを抽出する方法

Bash - サブディレクトリを繰り返してファイルを抽出する方法

10K_TIF(ホームディレクトリ)というディレクトリがあります。このデフォルトディレクトリには、それぞれtifイメージを含む複数のサブディレクトリがあります。各TIFイメージを読み、bashコマンドを使用してそのパスを抽出したいと思います。 10K_TIFサイズが15TBを超えています。

サンプル:

10K_TIF/4320cc/4320cc_01_rectified.tif
10K_TIF/4320cc/4320cc_02_rectified.tif
10K_TIF/4520cc/4520cc_01_rectified.tif
10K_TIF/4520cc/4520cc_02_rectified.tif

すべてのサブディレクトリをエコーし​​、すべてのtifイメージもエコーしましたが、これらのイメージは別々のコマンドにあります。

答え1

あなたはそれを使用することができますfind

find 10K_TIF -iname '*TIF'

結果を繰り返し、各画像に対して特定のタスクを実行するには、次のように使用できます。

find 10K_TIF -iname '*TIF' | while read tif; do echo "Found: $tif"; done

上記は、ファイル名が正常で、空白や奇妙な文字がないと仮定しています。ファイル名にこれらの文字を含めることができる場合は、代わりに以下を使用してください。

find 10K_TIF -iname '*TIF' -print0 | 
    while IFS= read -r -d '' tif; do echo "Found: $tif"; done

答え2

find 10K_TIF -iname "*.tif"

ファイルのコンテンツタイプを見つけるなど、各ファイルを処理する場合

find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 file

または md5sum を計算します。

find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 md5sum

答え3

すべてのサブディレクトリ内のすべての* .tiffファイルのみを一覧表示するには、パターン(globstar)をbash使用するのが最も簡単です。**

shopt -s globstar
ls **/*.tiff

答え4

findすべてのファイルを見つけ、使用したいコマンドに渡すことができます。

find 10K_TIF -iname "*.tif" -type f -print0 | xargs -0 -n1 <command>

(大文字と小文字の区別)で終わるすべての項目10K_TIFに一致するすべてのサブディレクトリを検索します。.tifそして.tif通常のファイルです(つまり、ディレクトリ、特殊ファイル、およびで終わるシンボリックリンクは処理されません)。

たとえば、シンボリックリンクと一般ファイルを処理するには、次のようにします。

find 10K_TIF -iname "*.tif" \( -type f -o -type l \) -print0 | xargs -0 -n1 <command>

関連情報