该目录中有大约 10,000 个文件,其中一些是 .fits,一些是 .tar。现在,我只需解压 .tar 文件。尽管运行 if 条件似乎是合理的,但 untar 命令“xvf”仅适用于每个文件,这无法使用循环。
答案1
untar 命令“xvf”仅适用于每个文件
这利用了循环必要的:
for file in ./*.tar; do tar xvf "$file"; done
答案2
实际上,find
你可以在没有循环的情况下完成这项工作。像这样:
find -iname '*.tar' -maxdepth 1 -exec tar xvf '{}' \;
逻辑是这样的:
-iname
匹配具有扩展名的文件.tar
(不区分大小写),并且-maxdepth 1
将匹配范围限制为深度1(这样./*/*.tar
就不会匹配)- 最后对匹配的文件
-exec
执行命令(注意,需要转义;更多信息请参阅)tar xvf
;
{}
find(1)