【问题标题】:Rename Files in Multiple Directories to the Name of the Parent Directory将多个目录中的文件重命名为父目录的名称
【发布时间】:2016-07-15 09:00:16
【问题描述】:

在我的目录中,我有多个名为 content 的文件。我需要使用父目录的确切名称重命名它们,将其移到外部并删除父目录。

棘手的部分是父目录名称格式是 a.txt , b.pdf , c.mp3 所以文件内容需要重命名 content.txt , content.pdf , content.mp3 然后移到外面,目录应该被删除。

ex;
INPUT

a.txt/content
b.pdf/content
c.mp3/content

OUTPUT

a.txt
b.pdf
c.mp3

我使用了这个 find 命令并给出了所需的回显输出我不知道从那里去哪里。

find . -type d -not -empty -exec echo mv \{\}/content \{\} \;

【问题讨论】:

    标签: bash directory find rename mv


    【解决方案1】:

    我只是在一个小脚本中使用 for 循环。

    #!/bin/bash
    DESTINATION=/home/whatever
    for dir in *; do
        if [[ -e $dir/content ]]; then
             mv $dir/content $DESTINATION/conent.${dir##*.} && rm -rf $dir
        fi
    done
    

    && 将确保仅在重命名成功后删除目录。

    【讨论】:

      【解决方案2】:

      在中间步骤中保存带有.bak 扩展名的文件,然后重命名为所需的名称:

      find . -mindepth 2 -type f -exec bash -c 'mv "$1" "${1%/*}".bak' _ {} \; \
             -exec bash -c 'rm -r "${1%/*}"' _ {} \; && rename 's/\.bak$//' *.bak
      

      示例:

      % tree                                                    
      .
      ├── a.txt
      │   └── content
      ├── b.pdf
      │   └── content
      └── c.mp3
          └── content   
      
      % find . -mindepth 2 -type f -exec bash -c 'mv "$1" "${1%/*}".bak' _ {} \; -exec bash -c 'rm -r "${1%/*}"' _ {} \; && rename 's/\.bak$//' *.bak
      
      % tree
      .
      ├── a.txt
      ├── b.pdf
      └── c.mp3
      

      【讨论】:

      • 代码创建了文件 a.txt.bak 、 b.pdf.bak 和 c.mp3.bak 但没有将文件重命名为原始扩展名
      • @Learner 最后的rename 进行最终重命名,例如a.txt.baka.txt....检查你是否有rename 命令..
      • 我确实有重命名命令。它给出了错误 Can't rename *.bak *: No such file or directory。我认为它正在一个不存在的地方寻找 .bak 扩展名。
      • @Learner 如果你按照我提到的,它应该工作..检查我的例子..
      • 我明白了。我认为当子目录中有 .bak 文件时也会出现问题。你是什​​么 && rename 's/\.bak$//' *.bak 命令来解决糟糕的情况?
      猜你喜欢
      • 2012-12-27
      • 2019-11-13
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多