求一段能去掉 .txt 中空格的 shell 程序

在 Ubuntu 论坛上有人说

find $filepath -name ‘* *’ -exec rename ‘s/ //g’ {} ;

成功了。

我在 openSUSE 13.1 上失败了。

chenwei@linux-bkga:~/program/shell> rename --version
rename,来自 util-linux 2.23.2
chenwei@linux-bkga:~/program/shell> find . -name '* *' -exec rename 's/ //g' {} \;
rename: 参数不够

用法:
 rename 选项] 表达式 替换文件...

选项:
 -v, --verbose    解释正在进行的操作
 -s, --symlink    在符号链接上执行

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

更多信息请参阅 rename(1)。
sed -i -e 's/^ \t]*//;s/ \t]*$//' test.txt

这段脚本会直接修改 test.txt 文件,并删除首尾空格(包括TAB)。

出现 参数不够 是因为 Ubuntu 和 openSUSE 用的不是一个 rename。Ubuntu 的 rename 命令来自 perl,openSUSE 的 rename 来自 util-linux。当初我和花花讨论过,Ubuntu 的 rename 命令归根结底似乎来自于 BSD。不信你找一台 Ubuntu 去执行下

rename --version

就明白了。