Linux查找文件夹并重命名

fre*_*nto 1 linux bash ubuntu

我要重命名的所有.hg_gg文件夹/var/www.hg.我该怎么做?我知道如何重新命名.hg.hg_gg.

find /var/www -name ".hg" -exec bash -c 'mv $0 $0_gg' {} \;
Run Code Online (Sandbox Code Playgroud)

但不知道如何进行逆向改变.

hek*_*mgl 7

试试这个:

find /var/www -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;
Run Code Online (Sandbox Code Playgroud)

您需要使用find定义的特殊语法:{}是当前文件名的占位符.检查手册页.同样重要的是使用-execdir而不是-exec.execdir将当前工作目录更改为找到的目录所在的文件夹.否则它会做这样的事情mv /var/www/.hg_gg ./.hg

在限制查找仅使用-type d以下内容查找文件夹时,您可以加快速度:

find /var/www -type d -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 5

考虑这个带有-execdir-prune选项的find 命令:

find /var/www/ -type d -name ".hg_gg" -execdir mv '{}' '.gg' \; -prune
Run Code Online (Sandbox Code Playgroud)
  • -execdir 将在每个子目录中执行命令
  • -prune 导致 find 不会下降到当前文件中