Linux 如何使用find重命名同名的不同目录中的文件

Linux 如何使用find重命名同名的不同目录中的文件,linux,shell,command-line,terminal,Linux,Shell,Command Line,Terminal,我在不同的目录中有名为test.txt的文件,如下所示 ./222/test.txt ./111/test.txt 我想将所有test.txt重命名为info.txt 我试过用这个 find . -type f -iname 'test.txt' -exec mv {} {}info \; 我得到了test.txtinfo您的想法是正确的,但是您需要使用-execdir而不仅仅是-exec来简化这个过程 find . -type f -iname 'test.txt' -execdir mv

我在不同的目录中有名为
test.txt
的文件,如下所示

./222/test.txt
./111/test.txt
我想将所有
test.txt
重命名为
info.txt

我试过用这个

find . -type f -iname 'test.txt' -exec mv {} {}info \;

我得到了
test.txtinfo

您的想法是正确的,但是您需要使用
-execdir
而不仅仅是
-exec
来简化这个过程

find . -type f -iname 'test.txt' -execdir mv {} info.txt ';'

这类似于
-exec
,不同之处在于执行给定的shell命令时,找到的路径名的目录作为其当前工作目录,而
{}
将包含找到的路径名的基本名称,而不包含其路径。还请注意,该选项是非标准选项(不符合POSIX)。

您的想法是正确的,但您需要使用
-execdir
而不仅仅是
-exec
来简化此过程

find . -type f -iname 'test.txt' -execdir mv {} info.txt ';'
这类似于
-exec
,不同之处在于执行给定的shell命令时,找到的路径名的目录作为其当前工作目录,而
{}
将包含找到的路径名的基本名称,而不包含其路径。还要注意,该选项是非标准选项(不符合POSIX)