BASH如何从文件命名文件并对其进行zcat处理

时间:2018-07-11 13:38:34

标签: bash xargs 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.gz进行操作,而不对目录中的任何其他文件进行操作。一种方法是(编辑:根据评论从{}中删除xargs zcat {}):

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

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

1 个答案:

答案 0 :(得分:1)

您可以避免使用cat

xargs zcat < listOfFiles.txt | awk ...