Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux查找文件夹并重命名_Linux_Bash_Ubuntu - Fatal编程技术网

Linux查找文件夹并重命名

Linux查找文件夹并重命名,linux,bash,ubuntu,Linux,Bash,Ubuntu,我想将/var/www中的所有.hg_gg文件夹重命名为.hg。我怎么做? 我知道如何将.hg重命名为.hg\u gg find /var/www -name ".hg" -exec bash -c 'mv $0 $0_gg' {} \; 但不知道如何进行反向更改。试试以下方法: find /var/www -name ".hg_gg" -execdir bash -c 'mv {} .hg' \; 您需要使用find定义的特殊语法:{}是当前文件名的占位符。检查一下电话号码。使用-exec

我想将
/var/www
中的所有
.hg_gg
文件夹重命名为
.hg
。我怎么做? 我知道如何将
.hg
重命名为
.hg\u gg

find /var/www -name ".hg" -exec bash -c 'mv $0 $0_gg' {} \;
但不知道如何进行反向更改。

试试以下方法:

find /var/www -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;
您需要使用find定义的特殊语法:
{}
是当前文件名的占位符。检查一下电话号码。使用
-execdir
而不是
-exec
也很重要
execdir
将当前工作目录更改为找到的目录所在的文件夹。否则它将执行类似以下操作
mv/var/www/.hg_gg./.hg

如果仅使用
-键入d
,将查找限制为查找文件夹,则可以加快速度:

find /var/www -type d -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;
试试这个:

find /var/www -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;
您需要使用find定义的特殊语法:
{}
是当前文件名的占位符。检查一下电话号码。使用
-execdir
而不是
-exec
也很重要
execdir
将当前工作目录更改为找到的目录所在的文件夹。否则它将执行类似以下操作
mv/var/www/.hg_gg./.hg

如果仅使用
-键入d
,将查找限制为查找文件夹,则可以加快速度:

find /var/www -type d -name ".hg_gg" -execdir bash -c 'mv {} .hg' \;

不是一行,但你可以这样做:

for file in `find /var/www -name ".hg_gg"`; do
    mv $file `echo $file | sed 's/hg_gg$/hg/'`
done

不是一行,但你可以这样做:

for file in `find /var/www -name ".hg_gg"`; do
    mv $file `echo $file | sed 's/hg_gg$/hg/'`
done

考虑使用带有
-execdir
-prune
选项的find命令:

find /var/www/ -type d -name ".hg_gg" -execdir mv '{}' '.gg' \; -prune
  • -execdir
    将在每个子目录中执行该命令
  • -prune
    使find不会下降到当前文件中

考虑使用
-execdir
-prune
选项执行此查找命令:

find /var/www/ -type d -name ".hg_gg" -execdir mv '{}' '.gg' \; -prune
  • -execdir
    将在每个子目录中执行该命令
  • -prune
    使find不会下降到当前文件中


我相信OP想要相反的结果是的,他说,但他展示了不同的代码。。我不确定他想要什么。我希望至少他是……)已更新代码mv:无法将
/var/www/test/.hg_gg'移动到
.hg/.hg_gg':我知道目录不是空的。使用
execdir
Great!它很管用,谢谢!我只添加了-depth参数,这样就不会显示找不到文件的错误。我相信OP想要相反的结果。是的,他说,但他显示了不同的代码。。我不确定他想要什么。我希望至少他是……)已更新代码mv:无法将
/var/www/test/.hg_gg'移动到
.hg/.hg_gg':我知道目录不是空的。使用
execdir
Great!它很管用,谢谢!我只添加了-depth参数,这样就不会显示找不到文件的错误。你能提供这些文件夹的一些示例吗?我想重命名/var/www/test/.hg_gg/to/var/www/test/.hg/你能提供这些文件夹的一些示例吗?我想重命名/var/www/test/.hg_gg/to/var/www/test/.hg/我会做一个[-d]在调用mv之前,测试确认该文件是要访问的目录。我将执行[-d]在调用mv.PS之前进行测试以确认文件是要删除的目录:注意,如果没有
-prune
选项,您将得到类似
/.hg\u gg:没有这样的文件或目录
PS:注意,如果没有
-prune
选项,您将得到类似
/.hg\u gg:没有这样的文件或目录