我正在编写一个循环遍历给定目录的子目录的脚本,找到" .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"。
请帮忙。提前谢谢。
答案 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