BASH如何从文件名和zcat他们



假设我有一个目录,内容如下:

$ ls
file1.csv.gz
file2.csv.gz
file3.csv.gz
file4.csv.gz
listOfFiles.txt

listOfFiles.txt包含一个文件列表,我希望zcat和管道到awk来处理它们的内容。例如,listOfFiles.txt可能包含以下内容:

$ cat listOfFiles.txt
file2.csv.gz
file3.csv.gz

在这种情况下,我希望zcat对file2.csv.gz和file3.csv.gzs进行操作,而不是对目录中的任何其他文件进行操作。一种方法是(编辑:根据注释从xargs zcat {}中删除{}(:

cat listOfFiles.txt | xargs zcat | awk ...

但我想知道zcat是否有更简洁的方法可以从listOfFiles.txt读取文件名。它必须能够处理任意长的文件名列表,xargs可以很好地处理这些文件名,理想情况下,它只会对listOfFiles.txt的整个内容调用zcat一次,而不是对listOfFiles.txt中包含的每个文件调用一次。

您可以避免cat:

xargs zcat < listOfFiles.txt | awk ...

相关内容

  • 没有找到相关文章

最新更新