有没有办法在find中的-exec中使用管道?我不希望grep通过整个文件,但只能通过每个文件的第一行.
find /path/to/dir -type f -print -exec grep yourstring {} \;
Run Code Online (Sandbox Code Playgroud)
我试图用"cat"和"head -1"把管道放在那里,但是效果不好.我尝试以某种方式使用括号,但我没有设法弄清楚如何将它们放在那里.我非常感谢你的帮助.我知道如何在不使用find的情况下以其他方式解决问题,但是我们尝试在学校使用find和pipeline来实现它,但是无法管理如何操作.
find /path/to/dir -type f -print -exec cat {} | head -1 | grep yourstring \;
Run Code Online (Sandbox Code Playgroud)
这是我们如何尝试这样做,但无法管理括号,甚至可能.我试图通过网络查看,但无法找到任何答案.
我使用find来查找返回查询的某些行的数据库的名称.
$ find . -name 'sqlite.db' -exec sqlite3 "{}" 'SELECT * FROM table WHERE column1="value"' \;
value|a|b|c|d
Run Code Online (Sandbox Code Playgroud)
但是我想要数据库的名称,所以我尝试了-print显示了所有的名字
$ find . -name 'sqlite.db' -print -exec sqlite3 "{}" 'SELECT * FROM table WHERE column1="value"' \;
/dir1/a/sqlite.db
value|a|b|c|d
/dir2/a/sqlite.db
/dir2/b/sqlite.db
/dir3/a/sqlite.db
Run Code Online (Sandbox Code Playgroud)
有没有办法只能获得命令运行的退出状态成功的文件.
为什么以下命令旨在递归删除所有.svn文件夹
find . -name ".svn" | rm -rfv
Run Code Online (Sandbox Code Playgroud)
不起作用?
我知道该find命令提供了-exec解决此问题的选项,但我只是想了解那里发生了什么.
我有一个包含大量子目录的目录。每个子目录的名称类似于“treedir_xxx”,其中 xxx 是一个数字。我想运行一个命令(最好从命令行,因为我没有使用批处理脚本的经验),该命令将计算每个名为“treedir_xxx”的子目录中的文件数量,并将这些数字写入文本文件。我觉得这应该不是很困难,但到目前为止我还没有成功。
我已经尝试过类似的操作find *treedir* -maxdepth 1 -type f | wc -l,但是这仅返回文件总数,而不是每个单独文件夹中的文件数。