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