複数のサブディレクトリとzipディレクトリからファイルを検索する

複数のサブディレクトリとzipディレクトリからファイルを検索する

1000個のフォルダから2,000個を超えるファイルを抽出する必要があります。問題は、各フォルダの内側と外側に圧縮されたフォルダと、私がアクセスする必要があるtemp.processedファイル形式を含む別のフォルダ「fileholder」があることです。これらすべてのファイルを検索して別の場所にコピーする方法はありますか?それとも、すべてのzipファイルを抽出する必要がありますか?

私は以下を実行しました:

 find -type f -iname \*.PROCESSED

ただし、圧縮ファイル内では検索されません。誰もが正しい方向に私を指すことができますか?

ベストアンサー1

私は2回の呼び出しでそれを行いますfind

  • zipすべてのファイルを見つけて処理する方法
  • もう1つは通常のファイルを処理します。

これは少し面倒で複雑な部分はawk呼び出しです。処理する出力はunzip -lスクリプトフレンドリーではありません。ヘッダーを削除するには、数字で始まる行を検索し、空の行を削除してから、最後に大文字と小文字を区別せずに.process一致させます。

FINDDIR="."
for f in `find "$FINDDIR" -type f -iname '*.zip'`; do
  dir=`dirname "$f"`
  for p in `unzip -l sth.zip | awk '{if (match($1, /^[0-9]+$/) && $1 > 0 && match(tolower($4), /\.processed$/)) print $4}'`; do
    echo "$dir/$p"
done
find "$FINDDIR" -type f -iname '*.processed'

これは再帰を処理できませんzip。つまり、1つのzipアーカイブが別のzipアーカイブ内にある場合です。

おすすめ記事