Regex Sed comand重命名文件夹名称(包含在[]之间的部分)

Regex Sed comand重命名文件夹名称(包含在[]之间的部分),regex,bash,awk,sed,rename,Regex,Bash,Awk,Sed,Rename,我有两个问题: 首先,如何使用sed命令将更改应用于文件夹而不是文件名? 我试过简单的命令sed-I-e's/Temporada//g'f,但不起作用 我试图使用sed命令重命名至少包含三个部分的文件夹和文件名,如[xxxxx][yyyyy][zzzzz987],但我只想删除不包含数字的文件夹和文件名。我对如何使用正则表达式定义它、如何区分[]部分以及如何区分包含数字的部分感到非常困惑 示例: 起源 项目-【企业】【日期:2016年2月2日】【DBB XXXXX】 结果 项目-[日期:2016年

我有两个问题:

  • 首先,如何使用sed命令将更改应用于文件夹而不是文件名? 我试过简单的命令sed-I-e's/Temporada//g'f,但不起作用
  • 我试图使用sed命令重命名至少包含三个部分的文件夹和文件名,如[xxxxx][yyyyy][zzzzz987],但我只想删除不包含数字的文件夹和文件名。我对如何使用正则表达式定义它、如何区分[]部分以及如何区分包含数字的部分感到非常困惑
  • 示例

    起源

    项目-【企业】【日期:2016年2月2日】【DBB XXXXX】

    结果

    项目-[日期:2016年2月2日]


    提前感谢

    这里有一个脚本可以整理一下(请记住在测试任何东西之前备份数据):

    首先,它获取当前目录中以“
    Project
    ”开头的所有文件/目录,并将
    do
    done
    之间的命令应用于每个文件:

    • 获取文件/dir名称字符串(
      $i
      ),并应用所需的字符串修改,将新字符串保存在新变量
      $new
    • 然后将旧文件/dir(
      $i
      )移动/重命名为新文件(
      $new
    请参见输出:

    xtd8865@darkstar:~/tmp/temp$ ls -l
    total 8
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.01032015][DBB\ fda]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.03032015][DBB\ dfada]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.04032015][DBB\ afdad]
    drwxr-xr-x 2 xtd8865 users 4096 Feb  7 13:34 Project\ -\ [Enterprise][Date.3234223][DBB\ dafa]/
    -rwxr-xr-x 1 xtd8865 users  169 Feb  7 13:35 script.sh*
    xtd8865@darkstar:~/tmp/temp$ ./script.sh 
    Project - [Enterprise][Date.01032015][DBB fda]
    Project - [Enterprise][Date.03032015][DBB dfada]
    Project - [Enterprise][Date.04032015][DBB afdad]
    Project - [Enterprise][Date.3234223][DBB dafa]
    xtd8865@darkstar:~/tmp/temp$ ls -l
    total 8
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.01032015]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.03032015]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.04032015]
    drwxr-xr-x 2 xtd8865 users 4096 Feb  7 13:34 Project\ -\ [Date.3234223]/
    -rwxr-xr-x 1 xtd8865 users  169 Feb  7 13:35 script.sh* 
    
    如您所见,它将重命名文件和目录


    sed命令本身使用sed的反向引用功能。有关反向参考的更多信息,请参见,例如。

    请添加您想看到的示例。我想你需要像
    mv dirTemporada dir
    mv“[xxxxx][yyyy][zzzz666]”xxxxyyyyxxx
    (当
    [xxxxx][yyyyy][zzzz666]
    在任何部分都有数字时。以及跳过哪些文件。如何处理文件
    [xxxxx][yyyyyy][zz666]和一些外部括号
    查看一下
    重命名
    命令。至少有两种不同的
    重命名
    实现。示例已添加到文章中。UNIX中没有文件夹。您可能正在考虑目录。在开始编写脚本之前,请阅读UNIX教程的介绍。变量
    “$i"
    将对许多真实世界的文件名造成严重破坏。输出中的反斜杠看起来很奇怪,与OP的示例不匹配。就反斜杠而言,复制了OP所需的输出,连字符周围有一个空格。在命令替换中,您仍然有一个空的无引号的
    echo$i
    。我的
    ls
    文件名中没有反斜杠空格;您的文件名中有反斜杠空格吗?
    xtd8865@darkstar:~/tmp/temp$ ls -l
    total 8
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.01032015][DBB\ fda]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.03032015][DBB\ dfada]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Enterprise][Date.04032015][DBB\ afdad]
    drwxr-xr-x 2 xtd8865 users 4096 Feb  7 13:34 Project\ -\ [Enterprise][Date.3234223][DBB\ dafa]/
    -rwxr-xr-x 1 xtd8865 users  169 Feb  7 13:35 script.sh*
    xtd8865@darkstar:~/tmp/temp$ ./script.sh 
    Project - [Enterprise][Date.01032015][DBB fda]
    Project - [Enterprise][Date.03032015][DBB dfada]
    Project - [Enterprise][Date.04032015][DBB afdad]
    Project - [Enterprise][Date.3234223][DBB dafa]
    xtd8865@darkstar:~/tmp/temp$ ls -l
    total 8
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.01032015]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.03032015]
    -rw-r--r-- 1 xtd8865 users    0 Feb  7 13:34 Project\ -\ [Date.04032015]
    drwxr-xr-x 2 xtd8865 users 4096 Feb  7 13:34 Project\ -\ [Date.3234223]/
    -rwxr-xr-x 1 xtd8865 users  169 Feb  7 13:35 script.sh*