1

我正在编写一个脚本,该脚本将遍历给定目录的子目录,查找“.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”。

请帮忙。提前致谢。

4

3 回答 3

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
于 2013-06-11T04:49:54.543 回答
1

尝试

for i in `find . -type f -name "*.js.compiled"`; do mv $i ${i%.*} ; done
于 2013-06-11T05:06:33.077 回答
0

使用以下代码:

find ./js/ -name "*.js.compiled" -print0 | while read -r -d '' filename; do
  mv "$filename" "${filename/js.compiled/js}";
done
于 2013-06-11T05:07:49.253 回答