bash - 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.gz 进行操作,而不是对目录中的任何其他文件进行操作。一种方法是(编辑:根据评论删除){}
:xargs zcat {}
cat listOfFiles.txt | xargs zcat | awk ...
但我想知道是否有更简洁的方法zcat
可以从listOfFiles.txt
. 它必须能够处理任意长的文件名列表,xargs
处理得很好,理想情况下,它zcat
只会为 . 的全部内容调用一次listOfFiles.txt
,而不是listOfFiles.txt
.
解决方案
你可以避免cat
:
xargs zcat < listOfFiles.txt | awk ...
推荐阅读
- cassandra - cassandra 升级是否需要为保存 TTL 数据的集群运行 nodetool upgradesstables
- node.js - loopback 4 从数据库中发现模型
- sql - SQL 查询 SUM 并除以不同的日期计数
- angular - Angular Firestore 集合快照更改
- javascript - JavaScript:在两个数组中查找公共元素的性能改进
- mybatis - org.xml.sax.SAXParseException : prolog 中不允许内容
- mysql - Django DetailView 在真实服务器中引发 404 not found 错误
- c# - 在 .NET 中,为什么 ObjectCache 是 MemoryCache 的首选类型?
- lifecycle - javaFxPorts 当我从谷歌地图返回到我的应用程序时。它从头开始。为什么?
- javascript - 超出最大深度,但 setState 应该只被调用一次