相关疑难解决方法(0)

如何在find中使用-exec中的管道

有没有办法在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)

这是我们如何尝试这样做,但无法管理括号,甚至可能.我试图通过网络查看,但无法找到任何答案.

unix pipe exec find

26
推荐指数
1
解决办法
2万
查看次数

在-exec命令中查找返回成功的文件名

我使用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)

有没有办法只能获得命令运行的退出状态成功的文件.

unix linux bash find

9
推荐指数
1
解决办法
3472
查看次数

为什么| 不适用于查找?

为什么以下命令旨在递归删除所有.svn文件夹

   find . -name ".svn" | rm -rfv
Run Code Online (Sandbox Code Playgroud)

不起作用?

我知道该find命令提供了-exec解决此问题的选项,但我只是想了解那里发生了什么.

linux bash shell

4
推荐指数
1
解决办法
1517
查看次数

从命令行计算多个子目录中的文件数量

我有一个包含大量子目录的目录。每个子目录的名称类似于“treedir_xxx”,其中 xxx 是一个数字。我想运行一个命令(最好从命令行,因为我没有使用批处理脚本的经验),该命令将计算每个名为“treedir_xxx”的子目录中的文件数量,并将这些数字写入文本文件。我觉得这应该不是很困难,但到目前为止我还没有成功。

我已经尝试过类似的操作find *treedir* -maxdepth 1 -type f | wc -l,但是这仅返回文件总数,而不是每个单独文件夹中的文件数。

linux shell command-line

2
推荐指数
1
解决办法
3633
查看次数

标签 统计

linux ×3

bash ×2

find ×2

shell ×2

unix ×2

command-line ×1

exec ×1

pipe ×1