查找目录中具有特定文件夹名称的所有文件并执行命令

Jin*_*Jin 2 bash shell find

我想使用 find 命令对目录中包含的多个不同目录中包含特定关键字(关键字是“Alpha”)的所有文件执行特殊命令,并将输出保留在工作目录中我运行命令的初始文件。

该命令的工作方式是要求您提供要执行该命令的初始文件,然后提供新转换的文件的名称。所以像这样

command file_to_run_command_on.txt new_file.txt
Run Code Online (Sandbox Code Playgroud)

这是我的代码

find $PWD -name *.txt* -exec command {} new_file. \;
Run Code Online (Sandbox Code Playgroud)

现在,它会找到该目录中的所有文本文件,甚至在子目录中,并且仅输出我运行初始查找命令的目录中的一个文件。我还不确定如何在目录中添加对关键字的额外搜索。感谢所有建议!

tha*_*guy 6

-exec在您启动的目录中运行该命令find。

-execdir在匹配文件的目录中运行命令。

要仅查找*.txt*其父级包含特定文件的文件,您可以使用:

find "$PWD" -path "*keyword*/*.txt*" -execdir command {} new_file \;
Run Code Online (Sandbox Code Playgroud)

这将运行命令 forfoo/bar/some-keyword-dir/baz/etc/file.txts但不运行foo/bar/baz/file.txts(父目录名称中没有关键字) 或foo/bar/some-keyword-dir/baz/file.tar(not *.txt*)