bash - 将管道与 find 命令一起使用

标签 bash awk find

我有一系列分隔文件,其中一些包含一些错误数据,可以通过对它们进行列计数来识别。我可以使用以下命令找到它们:

find ./ -name 201201*gz -mtime 12

它们都经过 gzip 压缩,我不想全部取消存档。因此,为了检查我一直在执行的列计数,我将其作为每个文件上的第二个命令运行:

zcat ./path/to/file.data | awk '{print NF}' | head

我知道我可以通过 find 使用 -exec 在每个文件上运行命令,但我怎样才能让它通过管道运行?我尝试了一些事情,但我期望这两种方法都不起作用,也没有起作用:

find ./ -name 201201*gz -mtime 12 -print -exec zcat {} \; | awk '{print NF}'| head
find ./ -name 201201*gz -mtime 12 -print -exec "zcat {} | awk '{print NF}'| head" \;

最佳答案

我会使用显式循环方法:

find . -name 201201*gz -mtime 12 | while read file; do
    echo "$file: "
    zcat "$file" | awk '{print NF}' | head
done

关于bash - 将管道与 find 命令一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298545/

相关文章:

linux - Eclipse 不使用 .bashrc 中设置的路径

linux - 如何找到目录中最新修改文件的时间戳(递归)?

java - 获取数组列表中项目的索引;

linux - "sh: line 1: Moved: command not found"使用 curl 安装 npm |嘘

linux - 守护进程 : fatal: failed to tell if . ... 是安全的

bash - grep 与以下以空格开头的行匹配

linux - 删除字符串直到 shell 脚本中第二次出现

python - 将特定文件从一个目录复制到另一个目录并附加其基本目录名称

linux - 如何使用find和exec执行多条命令

macos - awk:根据用户输入对文件进行排序