从 Linux 中的文件名中删除空格 [关闭]
Posted
技术标签:
【中文标题】从 Linux 中的文件名中删除空格 [关闭]【英文标题】:Remove whitespaces from filenames in Linux [closed] 【发布时间】:2013-02-27 04:13:27 【问题描述】:我在不同的文件夹中有数百个 jpg 文件,如下所示:
304775 105_01.jpg 304775 105_03.jpg 304775 105_05.jpg 304775 105_07.jpg 304775 105_02.jpg 304775 105_04.jpg 304775 105_06.jpg基本上,我需要删除空格。我已经知道将空格变为下划线的命令:
$ rename "s/ /_/g" *
但在这种情况下我不需要下划线。我只需要删除空间。我尝试了以下方法,但没有成功:
$ rename "s/ //g" *
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果它真的是一个空格,以下将起作用。
$ rename "s/ //g" *
试试
$ rename "s/\s+//g" *
\s
是一个空白字符,属于[ \t\r\n]
的集合。
【讨论】:
你怎么知道它是否真的是一个空格字符?对我来说,它看起来像一个空间。顺便说一句,$ rename "s/\s+//g" * 也不起作用。 @SamTimalsina 下划线替换对你有用,但空格不行?这似乎不太可能。 是的。它没有用。我从 Dropbox 下载了文件。我已经为此浪费了 2 个多小时。 谢谢你,我不知道没有 xargs 你可以做到这一点。 这里的重命名是什么?在我的发行版(ArchLinux)中,重命名 2.35.2(util-linux 包)。它没有这个选项,但rename [options] expression replacement file...
,即。没有 's/ //g' 可用。【参考方案2】:
你可以这样做:
IFS="\n"
for file in *.jpg;
do
mv "$file" "$file//[[:space:]]"
done
【讨论】:
这行得通!!!非常感谢!你能解释一下为什么 $ rename "s/ //g" * 不起作用吗? $ rename "s/ //g" * 对我来说没问题。也许你的环境有些奇怪。你在使用 bash 吗? 是的,我正在使用 bash。我的环境一定很奇怪。 我也在 zsh 中收到command not found: rename
以上是关于从 Linux 中的文件名中删除空格 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
无法删除 Windows 7 上带有尾随空格的文件夹 [关闭]