繁体   English   中英

将文件夹中的所有.tgz 文件解压缩到特定文件夹

[英]unzipping all .tgz files in folder to a specific folder

我是 linux 的新手,我正在尝试以下操作:

我有目录数据。 在这个目录中有 x 个以 *.tgz 结尾的文件。 我想解压每个,并将 output 存储在一个新文件夹中。 举个例子。 我开始:

ls data

folder_a.tgz    folder_b.tgz    folder_c.tgz

我想结束:

ls /data/test/
folder_a    folder_b    folder_c

我尝试了以下方法:

ls *.tgz | xargs -n1 tar zxvf -C /data/test/

这给出了错误:

-C cannot open: no such file or directory

我不明白为什么这不起作用,因为它们都按预期工作:

tar zxvf folder_a.tgz -C /data/test/
ls *.tgz | xargs -n1 tar zxvf

但是将这些结合起来是行不通的。 谁能帮助我实现目标,也许可以解释为什么我的解决方案不起作用?

您的问题是 xargs 将参数放在最后,但 tar 需要f标志之后的文件名。 以下应该有效:

ls *.tgz | xargs -n1 tar zxv -C /data/test/ -f

但也许在这里使用循环将是更好的解决方案:

for ARCHIVE in *.tgz; do tar xvzf "$ARCHIVE" -C /data/test; done

或者:

ls *.tgz | while read ARCHIVE; do tar xvzf "$ARCHIVE" -C /data/test; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM