循环目录,过程文件和重命名新文件

时间:2013-06-11 04:44:26

标签: linux bash google-closure-compiler

我正在编写一个循环遍历给定目录的子目录的脚本,找到" .js"文件,编译与关闭。我是用这个命令做的:

find ./js/ -type f -name "*.js" -exec java -jar compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js '{}' --js_output_file '{}'.compiled \;

然后删除旧的" .js"文件:

find ./js/ -type f -name "*.js" | xargs rm -f

但是,我无法使用名称" foo.js.compiled"重命名文件。到" foo.js"。

请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

find . -name "*.js.compiled" -exec rename -v 's/\.compiled$//' {} +

测试:

$ find . -name "foo*"
./fil/foo.js.compiled
$ find . -name "*.js.compiled" -exec rename -v 's/\.compiled$//' {} +
'./fil/foo.js.compiled' renamed to './fil/foo.js'
$ find . -name "foo*"
./fil/foo.js

答案 1 :(得分:1)

尝试

for i in `find . -type f -name "*.js.compiled"`; do mv $i ${i%.*} ; done

答案 2 :(得分:0)

使用以下代码:

find ./js/ -name "*.js.compiled" -print0 | while read -r -d '' filename; do
  mv "$filename" "${filename/js.compiled/js}";
done