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/

相关文章:

Java 命令行应用程序以某种方式保留状态

linux - awk 输出到变量

java - 生成终端读取其标准输入

linux - 在 ec2-linux AMI 上安装最新版本的 vsftpd

linux - SSH 拦截 - Linux

linux - 带 FS 的 Shell awk 命令

php - 从 PHP 问题在 Windows 中执行 cmd 命令

java - 如何安装BND环境以在命令行中使用bnd?

python - 在ubuntu中打开spyder

linux - 如何创建新文件并自动选择其名称?