linux - 如何找到具有给定名称的多行文件?

标签 linux bash command-line

问题:如何获取名称为“interesting-file.txt”且其中包含多于一行的所有文件?

背景研究:

  • 我可以使用 find 轻松找到文件。 -name "interesting-file.txt"
  • 我相信我需要使用某种形式的 wc -l 来获取他们的台词 数。
  • 我假设我会使用 awk '$1 > 1' 来找到那些文件 不止一行。

但我在将它们放在一起时遇到了问题。

我尝试了一些变体

find . -name "interesting-file.txt" | awk '{print wc -l $0}'

没有成功。除了寻找相关命令外,我还没有开始“大于一个”。

我在 OSX 上,使用标准终端。

感谢您的帮助!

最佳答案

我会选择这样的东西:

find . -name "interesting-file.txt" -exec awk 'END { if (NR > 1) print FILENAME }' {} \;

找到的所有文件都传递给 awk,如果 NR 行数大于 1,awk 将打印名称。

使用 GNU awk,您可以利用 ENDFILE block 并使用 {} + 来最小化 awk 的调用次数:

find . -name "interesting-file.txt" -exec awk 'ENDFILE { if (FNR > 1) print FILENAME }' {} +

关于linux - 如何找到具有给定名称的多行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34168397/

相关文章:

linux - 如何在没有鼠标的情况下从我的 xterm 复制文本?

c - 控制台应用程序中的输入事件循环

c++ - Qt 多线程信号量和条件变量

linux - Bash:在变量内使用单引号

bash - 启动另一个应用程序的脚本将在退出时将其关闭

perl - 您如何使用 Perl 的 App::Cmd 创建应用程序级选项?

linux - Bash 在 for 中跳过迭代

regex - 如何删除与模式匹配的特定数量的随机行

bash - 使用 bash 读取文本文件中行的子集

Java apache cli 参数顺序