[英]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.