解压缩txt文件中指定的文件列表

时间:2013-01-04 11:54:01

标签: bash zip

我有一个包含文件名列表的txt文件。 在bash中,如何从zip文件中解压缩列表中指定的那些文件?

2 个答案:

答案 0 :(得分:4)

这应该有效:

unzip -q /path/to/zipfile $(cat thetxtfile)

当然,这个命令需要在一个目录中发出,该目录最好是空的。

请注意,如果您的文件名中有空格,这将无效,您需要这样做:

while read thefile; do unzip -q /path/to/zipfile "$thefile"; done <thetxtfile

答案 1 :(得分:2)

如果您在命令行中使用文件列表,xargs几乎总是最好的答案 - 它可以干净地处理带空格的文件名,并且它可以获得参数数量的限制。我建议这样做:

tr '\n' '\0' <filelist.txt | xargs -0 unzip -q /path/to/zipfile

tr '\n' '\0' <filelist.txt的使用会获取您的文件列表,并将新字符替换为新行。 xargs -0读取一个nul分隔的文件列表,并将其添加到以下命令的agument列表中。

如果您的文件名列表使用'\ r \ n'或'\ r'样式的行尾,这将会中断。