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 ...
假设我有一个包含如下内容的目录:
$ 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 ...