Linux 命令:查找文件并对它们运行命令

Linux 命令:查找文件并对它们运行命令

如何设法找到目录和子目录中的所有文件并对它们运行命令?

例如,

find . -type f -name "*.txt" 

查找所有 txt 文件并:

find . -type f -name "*.txt" | gedit

将其发送到 gedit,但在文本文件中。我希望 gedit 打开所有文本文件。

答案1

您可以使用该-exec标志对每个匹配的文件执行命令:

$ find ./ -type f -name "*.txt" -exec gedit "{}" \;

句法

语法有点奇怪(-exec command ;更多信息请参阅手册页):

The string `{}' is replaced by the current file name being processed

您可能还想考虑-execdir,它将执行相同的操作,但从包含匹配文件的子目录执行命令(这通常是更好的选择)。

答案2

find . -type f -name "*.txt" -print0 | xargs -0 gedit

答案3

如果命令的输入参数也需要操作,请使用“-I”:

find ./ -type f -name "*.ext" -print0 | xargs -0 -I{} mv "{}" "{}.txt"

相关内容