我希望借助“rename”命令重命名任何深度的文件:
rename 's/.css/.less/' **/*
但我只在二级文件夹中重命名文件:
./style.css
./dir/style.less
./dir/dir/style.css
./dir/dir/dir/style.css
有人知道为什么吗?
(Debian 7,GNU bash,版本4.2.37)
答案 0 :(得分:2)
在根目录下运行以下find命令。
$ find . -name "*.css" -type f -exec rename 's/\.css$/.less/' {} \;
OR
$ shopt -s globstar; rename 's/\.css$/.less/' **/*
来自" man bash":
globstar
如果设置,路径名扩展上下文中使用的模式**将 匹配所有文件和零个或多个目录和子目录。如果 该模式后跟一个/,只有目录和子目录 匹配。
获取" globstar"的当前值:
$ shopt globstar
开启:
$ shopt -s globstar
出发:
$ shopt -u globstar