如何在文件名(也是子目录)中用一个 space 替换双 space(CloudLinux 服务器版本 6.10)
How to replace double spaces with one space in filenames (also subdirectories) (CloudLinux Server release 6.10)
我想将很多照片的文件名中的双 space 替换为一个 space。这些照片位于目录 /foto 及其子文件夹中。这该怎么做?例如 "photo 1.jpg" 需要变成 "photo 1.jpg"
最好的方法是使用命令行,因为它在 CloudLinux 服务器上。 (超过 50GB 的照片)。我在 Whosebug 上搜索了这里,还 Google 找到了我需要的命令。我想 rename 是要使用的,或者 mv.
我发现的唯一东西是关于替换 space 和替换其他符号的命令,但不是关于双(多)spaces 的命令。
使用这个,使用 Perl 的重命名:
rename 's/\s{2}/ /g' files*
当输出看起来不错时删除 -n
开关。
有其他同名工具可能无法做到这一点,所以要小心。
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
并且您的结果包含 Perl script, ASCII text executable
而不包含 ELF
,那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
等衍生产品:
$ sudo update-alternatives --set rename /path/to/rename
将 /path/to/rename
替换为 perl rename
可执行文件的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually(没有依赖...)
这个工具最初是由 Perl 之父 Larry Wall 编写的。
find -iname \*.* | rename -v "s/\s{2}/ /g"
这是帮助我解决问题的最后一条命令。我使用了 perl 重命名,请参阅 Gilles
的回答
我想将很多照片的文件名中的双 space 替换为一个 space。这些照片位于目录 /foto 及其子文件夹中。这该怎么做?例如 "photo 1.jpg" 需要变成 "photo 1.jpg"
最好的方法是使用命令行,因为它在 CloudLinux 服务器上。 (超过 50GB 的照片)。我在 Whosebug 上搜索了这里,还 Google 找到了我需要的命令。我想 rename 是要使用的,或者 mv.
我发现的唯一东西是关于替换 space 和替换其他符号的命令,但不是关于双(多)spaces 的命令。
使用这个,使用 Perl 的重命名:
rename 's/\s{2}/ /g' files*
当输出看起来不错时删除 -n
开关。
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
并且您的结果包含 Perl script, ASCII text executable
而不包含 ELF
,那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
等衍生产品:
$ sudo update-alternatives --set rename /path/to/rename
将 /path/to/rename
替换为 perl rename
可执行文件的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually(没有依赖...)
这个工具最初是由 Perl 之父 Larry Wall 编写的。
find -iname \*.* | rename -v "s/\s{2}/ /g"
这是帮助我解决问题的最后一条命令。我使用了 perl 重命名,请参阅 Gilles
的回答