Linux系统批量修改文件夹名字命令

Linux系统批量修改文件夹名字命令
假如路径 /data/ftp/KFQ下有 3001 3002 2003 2004 2005 五个文件夹
这个五个文件里都包含了 “你好” 这个文件夹
怎么样能批量把所有的 “你好” 文件夹名称换成 “NIHAO”

基于new bing的编写:

cd /data/ftp/KFQ
rename 's/你好/NIHAO/' 你好*/


解释一下上述命令:

  • 首先进入目标路径 /data/ftp/KFQ

  • 使用 rename 命令,后面跟上需要替换的内容。其中 's/你好/NIHAO/' 是一个正则表达式,表示将所有匹配到的“你好”替换成“NIHAO”。

  • 最后加上目标文件夹名称 你好*/ ,表示只修改所有以 你好 开头的文件夹名称。

  • 执行完毕后,就能够将所有 “你好” 文件夹名称换成 “NIHAO”。
    【或者】

cd /data/ftp/KFQ
for i in 你好*; do mv $i ${i/你好/NIHAO}; done

find /data/ftp/KFQ -type d -name "你好" -execdir mv {} NIHAO ;

这个问题好像回答过?

答案查考ChatGPT Plus版,在Linux系统下,可以使用以下命令批量修改文件夹名称:

  1. 进入目标文件夹所在的路径:

    cd /data/ftp/KFQ
    
  2. 运行以下命令,使用find命令找到所有包含"你好"的文件夹,并使用rename命令将文件夹名称中的"你好"替换为"NIHAO":

    find . -type d -name "*你好*" -execdir rename 's/你好/NIHAO/' {} \;
    

上述命令中的find命令将搜索当前目录下所有类型为文件夹(目录)且名称包含"你好"的项目。然后,-execdir参数将对每个匹配的项目执行后续命令,即rename命令。rename命令中的正则表达式s/你好/NIHAO/表示将"你好"替换为"NIHAO"。

执行完以上命令后,所有文件夹名称中的"你好"都将被替换为"NIHAO"。请确保在执行这些命令之前备份重要数据,并谨慎操作。

可以使用以下命令批量修改文件夹名称:

find /data/ftp/KFQ -type d -name "你好" -execdir rename 's/你好/NIHAO/' {} ;
解释:

find 命令用于在指定目录下查找包含关键字的文件夹;
-type d 参数表示只查找文件夹类型;
-name "你好" 参数表示只查找名称中包含 "你好" 的文件夹;
-execdir 参数表示对每个查找到的目标文件夹执行后面的命令;
rename 's/你好/NIHAO/' {} 即把每个目标文件夹的名称中的 "你好" 替换为 "NIHAO";
; 用于结束 -execdir 命令。
建议在操作前先备份原文件夹,以免意外情况造成不必要的损失。

保存以下为shell脚本,bash运行shell脚本文件,已实测

NIHAO_GBK=$(echo -e "\0304\0343\0272\0303")
NIHAO_UTF8=$(echo -e "\u4F60\u597D")
for F in /data/ftp/KFQ/*
do
  [ -d  $F/$NIHAO_GBK ] &&  mv  $F/$NIHAO_GBK $F/NIHAO
  [ -d  $F/$NIHAO_UTF8 ] &&  mv  $F/$NIHAO_UTF8 $F/NIHAO
done

使用rename试一下


cd /data/ftp/KFQ
rename 你好 NIHAO */你好
rename 's/你好/NIHAO/' */你好