BASH 如何从文件中提取文件名并对其进行 zcat

BASH how to filenames from a file and zcat them

假设我有一个包含如下内容的目录:

$ 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 可以很好地处理,理想情况下它只会为 listOfFiles.txt 的全部内容调用一次 zcat,而不是一次listOfFiles.txt.

中包含的每个文件

你可以避免cat:

xargs zcat < listOfFiles.txt | awk ...