【发布时间】:2017-09-07 12:53:56
【问题描述】:
这里是初学者。我想编写一个用于 bash 终端的简单脚本,但我不知道如何制作。要点是我有一个文件夹,里面装满了不同的文件,一些 .foo,一些 .bar 等。我想创建一个脚本来获取所有 .foo 文件并对它们执行命令,但在同一行重命名它们这样输出文件就被命名为file.baz。
例如: 命令 -i file.foo -o file.baz 用于目录中的所有 .foo 文件。
【问题讨论】:
这里是初学者。我想编写一个用于 bash 终端的简单脚本,但我不知道如何制作。要点是我有一个文件夹,里面装满了不同的文件,一些 .foo,一些 .bar 等。我想创建一个脚本来获取所有 .foo 文件并对它们执行命令,但在同一行重命名它们这样输出文件就被命名为file.baz。
例如: 命令 -i file.foo -o file.baz 用于目录中的所有 .foo 文件。
【问题讨论】:
您可以使用rename 命令:
$ rename .foo .baz *.foo
请注意,在某些系统上,rename 指向使用不同语法的 prename:
$ prename 's/.foo$/.baz' *.foo
使用man rename 找出您拥有哪一个。
您可以直接在命令行上提供文件列表,使用globbing pattern:
$ your_script *.foo
然后您的脚本可以像这样遍历列表(使用您的命令的用法):
for file in "$@"; do
your_command -i "$file" -o "${file%.*}.baz"
done
${file%.*} 解析为不带扩展名的文件名 (file.foo -> file)。有关字符串操作的更多信息,请访问here。
【讨论】:
for command in "$@",当然,我的错。我不知道command 内置,会研究它,谢谢
for file in *.foo; do your_command -i "$file" -o "${file%.foo}.baz"; done 之类的。