
私のスクリプトの初期段階では、ユーザーが提供した「x」個のファイルを解凍する必要がありました。圧縮ファイルセットには名前が重複しています(ただし内容は異なります)。つまり、zip1.zip と zip2.zip の両方に「d09483272」という名前のファイルが含まれています。
これにより複数のファイルを解凍できますが、unzip \*zip -d $M_DIR
私の場合、新しく解凍したファイルはすでに$ M_DIRの場所にあるファイルを上書きするため、非効率的です。
タイムスタンプで解凍してみてください。以下のような奇妙なネストループ(明らかに動作しません)
for zip in *zip; do
unzip -l *zip | while read file
do
unzip -p *.zip ${file} > $(date "+%H:%M:%S:%s%N").pdf
done
done
これが適切なアプローチではない場合は、より簡単な方法がありますか?アイデア?
答え1
unzip
-manpageを見てください。
-n never overwrite existing files. If a file already exists, skip the extraction
of that file without prompting.
答え2
時間が限られていたので、エレガントではないクイック修正に突入しました。
for zip in $T_DIR*zip; do
unzip $zip -d $M_DIR;
rename "s/.pdf/$(date "+%s%N").pdf/" ${M_DIR}*;
done
各ファイルは個別に$T_DIR
フォルダーに抽出され、ファイル名にナノ秒タイムスタンプが追加されます。解凍されたファイルの次の波がそのフォルダに入ると、$T_DIR
「重複する名前」はもうありません。より高速で改善されたソリューションのアイデアはありますか?
これは、「冗長名」ファイルが別々のzipファイルに存在する警告にのみ適用されます。