gpt4 book ai didi

bash - 从多个 zip 中解压特定类型的文件

转载 作者:行者123 更新时间:2023-12-04 02:24:39 26 4
gpt4 key购买 nike

我有 5 个 zip 文件,每个文件中都有一些 .txt 文件和其他一些文件。我只想解压缩那些扩展名为 .txt 的文件,但在循环的第一次迭代中,unzip 运行正确,“*.txt”被视为常量字符串,并且在所有后续迭代 unzip 都会尝试解压缩具有完全相同文件名的文件(即那些在前一个 zip 文件中的文件)。

for file in *.zip
do
unzip ${file} *.txt
done

例如,在第一个循环中,它采用 1.zip 并解压缩,例如file1.txt 然后进入第二个循环,它获取 2.zip 并尝试再次提取 file1.txt - 而不是选择所有来自 2.zip 的 .txt 文件。

最佳答案

你需要用单引号保护你的通配符模式,否则 shell 会扩展它(这叫做 globbing ):

for file in *.zip; do
unzip ${file} '*.txt'
done

在循环的第一次迭代中,*.txt 不会扩展为任何内容,因为工作目录中没有 txt 文件,因此该命令按预期工作。第一次迭代后,它扩展为您刚刚从第一个 zip 文件中提取的所有 txt 文件,因此第二次和后续迭代在通配后实际上看起来像这样:

unzip ${file} file1.txt

关于bash - 从多个 zip 中解压特定类型的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com