我有一个包含许多 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 脚本应返回以下输出(共 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&&$1!=temp{printf "\n"} {printf "-a %s ",$0; temp = $1}'
输出:
-a 11111-2014.pdf -a 11111-2015.pdf
-a 22222-2015.pdf
-a 33333-2013.pdf -a 33333-2014.pdf -a 33333-2015.pdf
然后,您可以一次使用每一行并发送邮件。
关于linux - Centos shell 脚本 - 对以相同字符串开头的文件进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041881/