【问题标题】:How can I use a single command to unzip every file in a directory, into a new unique directory with the same name as the file如何使用单个命令将目录中的每个文件解压缩到与文件同名的新的唯一目录中
【发布时间】:2017-01-31 23:50:31
【问题描述】:

我有一个充满 zip 文件的目录。每个都称为“files1.zip”之类的东西。 我的直觉是使用 bash for 循环来解压缩每个文件。

问题是,许多文件会将其内容直接解压缩到父目录中,而不是将所有内容展开到它们自己的唯一目录中。所以,我得到了文件汤。

我想确保“files1.zip”将其所有文件放入名为“files1”的目录中,依此类推。

作为一个额外的复杂因素,一些文件名有空格。

我该怎么做?

谢谢。

【问题讨论】:

标签: bash unzip


【解决方案1】:
for f in *.zip; do
  dir=${f%.zip}

  unzip -d "./$dir" "./$f"
done

【讨论】:

    【解决方案2】:

    简单的一个班轮

    $ for file in `ls *.zip`; do unzip $file -d `echo $file | cut -d . -f 1`; done
    

    【讨论】:

    • 您的代码不适用于包含空格或以连字符开头的 zip 文件名。
    【解决方案3】:

    您可以使用 -d 解压缩到不同的目录。

    for file in `echo *.zip`; do
        [[ $file =~ ^(.*)\.zip$ ]]
        unzip -d ${BASH_REMATCH[1]} $file
    done
    

    【讨论】:

    • echo *.zip 不适用于包含空格的 zip 文件名。
    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2022-01-08
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多