如何设法找到目录和子目录中的所有文件并对它们运行命令?
例如,
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"