如何在Linux中将包含下划线的所有文件和文件夹重命名为连字符

时间:2014-04-06 12:45:52

标签: linux rename file-rename batch-rename

我想重命名名称中包含下划线的所有文件和文件夹,并用连字符替换下划线。

目前我正在使用以下代码

rename '_' '-' */*/*

它正在运作,但现在它向我显示“参数列表太长”

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

$ tree foo
foo
├── dir_1
│   └── foo_file_2
└── file_1

1 directory, 2 files
$ for ft in d f; do find foo -type $ft -execdir sh -c 'mv "$0" "${0//_/-}"' {} \; ; done 2>/dev/null
$ tree foo
foo
├── dir-1
│   └── foo-file-2
└── file-1

1 directory, 2 files

这会重命名所有目录,然后重命名所有文件(for循环遍历d f),因为我无法在一次迭代中完成所有重命名。