重命名组中的文件

重命名组中的文件

我的文件夹和文件结构如下


Folder/1/fileNameOne.ext
Folder/2/fileNameTwo.ext
Folder/3/fileNameThree.ext
...

我如何重命名文件,使得输出变成


Folder/1_fileNameOne.ext
Folder/2_fileNameTwo.ext
Folder/3_fileNameThree.ext
...

在linux shell中怎样实现这个?

答案1

下面是执行该操作的 bash 脚本:

注意:如果任何文件名包含空格,则此脚本不起作用。

/bin/bash #!/bin/bash

# 仅浏览当前目录中的目录。
对于 $(find ./ -type d) 中的目录
    # 删除前两个字符。
    # 最初,$dir = "./directory_name"。
    # 完成此步骤后,$dir = "directory_name"。
    目录=“${dir:2}”

    # 如果 $dir 为空则跳过。仅当 $dir = "./" 初始时才会发生。
    如果 [ !$dir ]
    然后
        继续

    # 浏览目录中的所有文件。
    对于 $(ls -d $dir/*) 中的文件
        # 用。。。来代替 _
        # 例如,如果 $file = "dir/filename",那么 $new_file = "dir_filename"
        # 其中 $dir = dir
        new_file="${文件/\//_}"

        # 移动文件。
        mv $文件$新文件
    完毕

    # 删除目录。
    rm -rf $目录
完毕
  • 将脚本复制粘贴到文件中。
  • 使用使其可执行
chmod +x 文件名
  • 将脚本移动到目标目录。在你的情况下,它应该在里面Folder/
  • 使用 运行脚本./file_name

相关内容