我需要用.js
扩展名重命名所有文件,但文件名称可能会有所不同,例如:
rootDirectory
--firstDirectory
----first.js
--secondFileDirectory
----second.js
--thirdDirectory
----third.js
需要重命名为
rootDirectory
--firstDirectory
----newName.js
--secondFileDirectory
----newName.js
--thirdDirectory
----newName.js
有办法做到吗?
我使用的是 Ubuntu 14.04
答案1
find
Ububtu 14 有一个具有该选项的版本-execdir
,因此这变得相对简单:
find . -name '*.js' -execdir mv -i {} newName.js \;
例如,我有这棵树:
./A
./A/first.js
./B
./B/second.js
我运行命令
$ find . -name '*.js' -execdir mv -i {} newName.js \;
生成的树:
./A
./A/newName.js
./B
./B/newName.js
答案2
基于 Perl rename
,假设pwd
是 rootDirectory:
rename 's|(.*/).*\.js|$1newName.js|' */*
或者
rename 's|.*/\K.*\.js|newName.js|' */*
rename -n
如果您想检查重命名将如何发生,请使用