我只需要重命名目录而不是文件,并且我想使用 来完成rename
。
有什么办法吗?
手册中没有提到如何区分目录和文件。
此命令改变所有内容,无论目录还是文件:
rename 's/ /\n/g' *
这个命令解决了我的问题:
rename 's/ /\n/g' */
我需要在它后面加一个斜线。
答案1
rename
不区分文件和文件夹。
shell 负责将通配符扩展*
为文件和文件夹。
*
将扩展到所有非隐藏文件和文件夹。*/
将扩展到所有非隐藏文件夹。
但我不知道有什么方法可以仅扩展到文件。你可以改用find -exec
。
仅限文件夹:
rename 's/ /\n/g' */
或者
find . -maxdepth 1 -type d -exec rename 's/ /\n/g' {} +
仅限文件:
find . -maxdepth 1 -type f -exec rename 's/ /\n/g' {} +
请注意,find
还会发现隐藏文件不像(除非您通过运行*
打开shell 选项)。dotglob
shopt -s dotglob
zsh
似乎能够仅匹配文件使用通配符。
免责声明:我不建议在文件名中添加换行符,因为它可能会引起麻烦并破坏许多脚本。