如何对多个文件运行命令

如何对多个文件运行命令

这是非常基本的,我有一个包含几个 JS 文件子文件夹的文件夹,我想对这些文件夹中的所有文件运行 Google 的 Clojure 编译器。处理单个文件的命令如下:

java -jar compiler.jar --js filename.js --js_output_file newfilename.js

如何修改它以在目录结构中的每个 JS 文件上运行?

答案1

您可以使用find

find . -name "*.js" -exec java -jar compiler.jar --js {} --js_output_file new{} \;

答案2

您还可以使用简单的for循环,特别是当文件位于单个目录(无子目录)中时。它也可以修改为与子目录一起使用。

没有递归:

for filename in ./*.js
do
    java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done

或作为等效的一句台词:

for filename in ./*.js; do java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"; done

递归到子目录(需要 GNU bash 4.0 或更高版本)(谢谢@克里斯唐):

shopt -s globstar
for filename in ./**/*.js; do
    java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done

相关内容