同じ名前のファイルを上書きせずに複数のファイルを解凍します。

同じ名前のファイルを上書きせずに複数のファイルを解凍します。

私のスクリプトの初期段階では、ユーザーが提供した「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.

おすすめ記事