単一ファイルを使用してアーカイブを解凍し、アーカイブ名と一致するように出力名を変更します。

単一ファイルを使用してアーカイブを解凍し、アーカイブ名と一致するように出力名を変更します。

目的は、多くのzipファイルを解凍し、結果ファイルの名前を元のアーカイブ名に変更することです。

多くのzipファイルを含むフォルダの場合、ほとんどの名前というファイルが含まれていますが、bla.txtもちろんいくつかの例外もあります。私たちが知っているように、すべてのファイルにはtxtファイルであるファイルがあります。

./zips/
    a.zip - contains bla.txt
    b.zip - contains bla.txt
    c.zip - contains somethingelse.txt
    d.zip - contains bla.txt
    ...   - ...

出力は

./zips/
    a.txt
    b.txt
    c.txt
    d.txt
    ...  

すべてを抽出し、多数のフォルダを残した最高の最新写真:

for z in *.zip; do unzip $z -d $(echo 'dir_'$z); done

たぶん良い

for z in *.zip; do unzip $z; mv 'content_name.txt' $z; done

ところで、コンテンツ名はどのようにして得られますか?

ベストアンサー1

この-dアイデアを引き続き使用して、抽出されたファイルの名前を希望の「zip名減算zip + txt」に変更できます。

mkdir tmp
for f in *.zip; do unzip "$f" -d tmp && mv tmp/* "${f%.zip}.txt"; done
rmdir tmp

あるいは、unzipの出力を適切な名前のファイルにパイプすることもできます。

for f in *.zip; do unzip -p "$f" > "${f%.zip}.txt"; done

おすすめ記事