如何将文件参数传递给我的 bash 脚本两次并修改文件名

Posted

技术标签:

【中文标题】如何将文件参数传递给我的 bash 脚本两次并修改文件名【英文标题】:How can I pass a file argument to my bash script twice and modify the filename 【发布时间】:2021-09-05 16:52:40 【问题描述】:

我们在一个目录中有大量文件需要由一个名为process 的程序处理,该程序需要两个参数infileoutfile。 p>

我们想在 infile 之后命名 outfile 并添加一个后缀。例如。为了处理单个文件,我们会这样做: process somefile123 somefile123-processed

我们如何从命令行一次处理所有文件? (这是在 bash 命令行中)

【问题讨论】:

***.com/questions/10523415/… for f in *; do process "$f" "$f-processed" & done @cyrus: 有一个错字: & 应该是 ; @OliverGaida:看起来像是错字,但不是。这考虑了“一次处理所有文件”的要求。要一个接一个地处理文件,您必须按照您的建议将& 替换为; 【参考方案1】:

正如@Cyrus 在 cmets 中所说,通常的做法是:

for f in *; do process "$f" "$f-processed" & done

但是,如果您有数千个文件,这可能是不可取的,并且会导致“雷鸣般的羊群” 进程,因此您可以考虑 GNU Parallel,它是:

更可控, 可以为您提供进度报告, 更容易输入

默认情况下,每个 CPU 内核运行一个进程以保持它们都处于忙碌状态。所以,那将变成:

parallel process  -processed ::: *

【讨论】:

以上是关于如何将文件参数传递给我的 bash 脚本两次并修改文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何将传递给我的 bash 脚本的所有参数传递给我的函数? [复制]

如何将文件路径作为 bash 脚本中的参数传递给函数? [复制]

如何将数组参数传递给 Bash 脚本

sh 如何将参数传递给Bash脚本

执行 curl 获取的脚本时将参数传递给 bash

sh 将参数传递给Bash脚本