如何在查找的所有结果上运行命令?

时间:2013-09-19 15:48:38

标签: unix find

使用 find 我创建一个文件,其中包含使用特定关键字的所有文件:

find . -type f | xargs grep -l 'foo' > foo.txt

我想在foo.txt中获取该列表,并且可能使用该列表运行一些命令,即在文件中包含的列表上运行ls命令。

2 个答案:

答案 0 :(得分:3)

您无需xargs即可创建foo.txt。只需使用-exec执行命令,如下所示:

find . -type f -exec grep -l 'foo' {} \; > foo.txt

然后,您可以通过循环文件对文件运行ls

while IFS= read -r read file
do
   ls "$file"
done < foo.txt

也许它有点难看,但这也可以做到:

ls $(cat foo.txt)

答案 1 :(得分:2)

您可以像这样使用xargs

xargs ls < foo.txt

xargs的优势在于它将使用多个参数执行命令,这比使用循环每个参数执行一次命令更有效。例如。