如何使用"重命名"更改文件名任何深度的命令?

时间:2014-10-24 10:06:10

标签: bash file-rename

我希望借助“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)

1 个答案:

答案 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