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

4
我希望重命名所有文件和文件夹中包含下划线的名称,并将下划线替换为连字符,以下是当前使用的代码:rename '_' '-' */*/*。它以前有效,但现在显示“参数列表过长”。

该命令可能匹配了太多的文件名,导致它们的名称扩展变得过长,至少比shell命令的最大大小要长。 - alk
我们如何使其在循环中工作?如果有人能帮助我,我将非常感激! - Vishal Barot
你可能想看看 awk 工具。或者使用带有 -exec 选项的 find 命令。 - alk
1个回答

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

这将重命名所有目录和文件(使用d f上的for循环),因为我无法使其在一次迭代中完成所有重命名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接