我要重命名的所有.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)
但不知道如何进行逆向改变.
试试这个:
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)
考虑这个带有-execdir和-prune选项的find 命令:
find /var/www/ -type d -name ".hg_gg" -execdir mv '{}' '.gg' \; -prune
Run Code Online (Sandbox Code Playgroud)
-execdir 将在每个子目录中执行命令-prune 导致 find 不会下降到当前文件中