我的文件夹和文件结构如下
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
。