Centos shell 脚本 - 对以相同字符串开头的文件进行分组

Centos shell script - Group files starting with the same string

我有一个包含许多 pdf 文件的目录。每个文件名都以数字ID开头(5个字符定长),如下:

11111-2014.pdf  
11111-2015.pdf  
22222-2015.pdf  
33333-2013.pdf  
33333-2014.pdf  
33333-2015.pdf  

我想弄清楚如何在 CentOS 中编写一个 shell 脚本来读取此类目录中的文件并根据 ID 列出它们。 shell 脚本应该 return 以下输出(3 行)如下:

11111-2014.pdf 11111-2015.pdf  
22222-2015.pdf  
33333-2013.pdf 33333-2014.pdf 33333-2015.pdf  

并为每一行分配一个变量名称(即:$rowstring)。

我想将所有以相同 ID 开头的文件分组到一个字符串中,并通过命令行使用 mutt 电子邮件客户端将它们附加到同一封电子邮件。所以,按照上面的例子:

对于每个唯一的 $rowstring,命令将是:

mutt -s "subject" $rowstring -- abc@domain.com < body.txt  

其中 $rowstring(附件)应如下所示
对于第一封电子邮件:

-a 11111-2014.pdf -a 11111-2015.pdf

第二封邮件:

-a 22222-2014.pdf  

第三封邮件:

-a 33333-2013.pdf -a 33333-2014.pdf -a 33333-2015.pdf

我尝试结合使用 ls 和 awk 命令,但我是新手,无法成功。 谢谢大家

以下命令:

 ls  | awk -F '-' 'BEGIN{temp=""} temp&&!=temp{printf "\n"} {printf "-a %s ",[=10=]; temp = }'

输出:

-a 11111-2014.pdf -a 11111-2015.pdf
-a 22222-2015.pdf
-a 33333-2013.pdf -a 33333-2014.pdf -a 33333-2015.pdf

然后您可以一次使用每一行并发送邮件。