创建以一系列文件作为输入执行命令,逗号分隔

create executing a command with a sequence of files as the input, comma separated

请原谅,这可能是一个简单的操作,但我来自面向对象的编程语言,这在 unix/bash/terminal 中不是很直观。

假设我想执行文件列表的命令,file1,file2,file3 所以命令会读取

cmd -i file1,file2,file3

现在,假设我有 1000 个这样的文件。我只想 运行 它遍历所有文件。然而。如果我只输入

cmd -i file{1..1000}

我收到一条错误消息。这是因为 file{1..1000} return 的列表看起来像

file1 file2 file3 file4....

我需要它 return 文件 1、文件 2、文件 3、文件 4、....

你可以在这里使用 printf:

cmd -i $(printf "%s," file{1..999})file1000

使用 bash 内置函数:

printf -v string "file%s," {1..1000}
cmd -i  ${string%,*}

如果您真的必须这样做(请参阅我的评论:您应该重写代码以使您的生活更轻松),那么:

cmd -i $(echo file{1..1000} | tr ' ' ',')

echo生成的文件名用空格分隔; tr 命令将嵌入的空格映射为逗号。

但您确实需要重写您的命令,以便它希望每个文件名作为一个单独的参数。