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

Bash 在目录中具有特定文件夹名称的所有文件上查找并执行命令,bash,shell,find,Bash,Shell,Find,我想使用find命令对目录中的所有文件执行一个特殊命令,这些文件包含在多个不同的目录中,其中包含一个特定的关键字(关键字是“Alpha”),并将输出保存在我运行该命令的初始文件的工作目录中 该命令的工作方式要求您提供执行该命令的初始文件,然后提供新转换文件的名称。就这样 command file_to_run_command_on.txt new_file.txt 这是我的密码 find $PWD -name *.txt* -exec command {} new_file. \; 现在,它

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

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

command file_to_run_command_on.txt new_file.txt
这是我的密码

find $PWD -name *.txt* -exec command {} new_file. \;

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

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

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

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

find "$PWD" -path "*keyword*/*.txt*" -execdir command {} new_file \;

这将为
foo/bar/some keyword dir/baz/etc/file.txts
运行命令,但不为
foo/bar/baz/file.txts
(父目录名称中没有关键字)或
foo/bar/some keyword dir/baz/file.tar
(不是
*.txt*
-exec
在启动
find
的目录中运行命令

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

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

find "$PWD" -path "*keyword*/*.txt*" -execdir command {} new_file \;

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

您想知道为什么
命令文件1.txt新文件。
后面跟着
命令文件2.txt新文件。
只生成一个输出文件?这是因为您为这两个文件指定了相同的输出名称,所以它们会一直覆盖该名称name@thatotherguy是的,但是如果它位于包含初始文件的本地目录中,则不会覆盖这些文件,因为所有这些文件都位于它们自己的唯一目录中。我明白为什么最初的帖子对此不清楚,所以我改变了措辞。这更有意义吗?您是否想知道为什么
命令文件1.txt newfile.
后面跟着
命令文件2.txt newfile.
只生成一个输出文件?这是因为您为这两个文件指定了相同的输出名称,所以它们会一直覆盖该名称name@thatotherguy是的,但是如果它位于包含初始文件的本地目录中,则不会覆盖这些文件,因为所有这些文件都位于它们自己的唯一目录中。我明白为什么最初的帖子对此不清楚,所以我改变了措辞。这更有意义吗?