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アーカイブ内にある場合です。