我有大量的 gz 文件。我想把它们全部提取出来。这是我试图做的:
find . | grep .gz | gunzip
但是,gunzip 不接受来自 stdinput 的文件列表。我怎样才能将它们全部解压(就地)?
答案1
如果您想要调用gunzip
名称以.gz
当前目录中任何位置结尾的每个文件,则应该这样做:
find . -type f -name '*.gz' exec gunzip {} +
将标准输入上的内容转换为命令参数的更通用方法是使用 xargs,但该命令有一些需要注意的问题。
答案2
也许更好的方法是使用find
's-name
和-exec
options?这样 grep 就没有必要了,它可以将每个匹配的文件gunzip
单独传递给 , 。
这看起来像:
find . -name '*.gz' -exec gunzip '{}' +
中$CWD
(包括子目录)中名称以 结尾的所有文件都.gz
将被交给gunzip
解压。此外,解压后的文件将最终出现在$CWD
不采取进一步措施的情况下。