linux - 有没有一种有效的方法可以用 _ 替换文件名中的空格? (数千个文件)

标签 linux bash awk sed

我有一个目录“FolderName”,每天都有 10,000 个新文件。这些文件中几乎一半的名称如下:

filename_yyyy-mm-dd_hh:mm

而另一半的名字是:

filename_yyyy-mm-dd hh:mm

(用空格代替下划线)

我想要设置的脚本应执行以下操作:

仅重命名名称中包含空格的文件,跳过不需要处理的文件。

我找不到使脚本高效的方法,我需要真正跳过好一半,我的脚本尝试 mv 任何文件,而且它相当长且效率低下。有更好的设计好主意吗?

谢谢大家

最佳答案

查看 rename实用程序,一个专门为此设计的 Perl 脚本,它功能强大且快速。

rename -n ' ' _ *\ *

或者:

find /path/to/dir -type f -name '* *' -exec rename -n ' ' _ {} \;

-n 标志用于试运行,打印发生的情况,而无需实际重命名任何内容。如果输出看起来不错,请删除该标志并重新运行。

关于linux - 有没有一种有效的方法可以用 _ 替换文件名中的空格? (数千个文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40428510/

相关文章:

基于 linux 终端的桌面

linux - nasm,86_64,linux ,"hello world"程序。当链接时,它说 "relocation truncated to fit"

bash - Linux shell - 解析奇怪格式的日期

regex - 如何通过awk中的转义双引号替换双引号?

PHP 删除完整文件夹

linux - 从日志文件中搜索值和计数

bash - awk 中的基本名称或结尾?

python - 将列表项与同一列表另一端的项目匹配?

bash - 在 Ubuntu 上,bash 脚本总是返回 0,即使设置了 set -o errexit

bash - 这个 bash 脚本有什么问题吗?