我有一个很大的文件列表:
i18n/
editor.utf8
editor_fr.utf8
editor_ko.utf8
editor_ge.utf8
...etc. (dozens of these)
我想运行一个实用程序,我们称之为它fizzbuzz
,它将“输入文件”和“输出文件”作为其程序参数。调用它的一个例子是:
fizzbuzz editor.utf8 editor.properties
或者:
fizzbuzz editor_fr.utf8 editor_fr.properties
因此,对于每次调用,我想要输入文件是 下的不同文件i18n/
,并且我希望输出文件是同名文件,但具有不同的文件扩展名 ( .properties
)。如果输出/属性文件已经存在,它应该被完全覆盖。
我如何编写脚本,以便可以在 中的fizzbuzz
每个.utf8
文件上运行i18n/
,并为每个文件指定一个具有相同名称的输出,只是一个.properties
文件?
迄今为止我最好的尝试:
for FILE in i18n
do
fizzbuzz FILE FILE.properties
done
只是创建一个单独的FILE.properties
文件。
答案1
如果所有文件都位于 i18n 的下一级,则不需要 find 方法。
更改 for 命令以使用:
对于 i18n/* 中的文件
此外,在引用变量时,变量前面必须带有 $。
我的建议是在第一次执行 for 循环时使用安全命令,否则可能会造成很大的损害。例如,只需列出它看到的 FILE 值,并显示它将运行的命令:
for FILE in i18n/*
do
echo "fizzbuzz $FILE $FILE.properties"
done
当你满意这就是你想要的,然后去掉回声。
如果您希望它遍历多个目录,这个答案不会很好地工作,但我将按照最初的问题,它看起来可能是一个平面目录。