gpt4 book ai didi

linux - 在 Linux 中作用于多个文件的脚本

转载 作者:太空狗 更新时间:2023-10-29 11:31:25 25 4
gpt4 key购买 nike

我想创建一个可以给定 3 个参数的脚本:task、infile-type、outfile-type;并且它应该将任务应用于文件夹中的每个此类文件。例如,我应该能够给出命令:convert png jpg,它应该将文件夹中的所有 png 文件转换为 jpg。我还应该能够发送带有任务的选项,用引号括起来,例如:"convert -o myoption"png jpg

我试过:

#! /bin/bash
for f in *.$2
do
$1 "$f" -o "${f%.$2}.$3"
done

以上是否可行,还是我需要将 $1 等包含在 {} 或 [] 中?我没有尝试过,因为如果错误,可能会对文件造成不可预测的损坏。感谢您的帮助。

最佳答案

您可以使用 GNU Parallel 很容易地表达这一点,并且还可以享受所有并行运行的任务的额外好处:

parallel convert {} {.}.png ::: *.jpg

其中 {} 替换参数,{.} 表示没有扩展名的参数。

关于您担心做一些有潜在危险的事情,请使用 --dry-run 来测试它会做什么,而无需实际做任何事情:

parallel --dry-run convert -o XYZ {} {.}.png ::: *.jpg

示例输出

convert -o XYZ a.jpg a.png
convert -o XYZ a\ g.jpg a\ g.png
convert -o XYZ b.jpg b.png

关于linux - 在 Linux 中作用于多个文件的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43907666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com