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