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
然后您可以一次使用每一行并发送邮件。
我有一个包含许多 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
然后您可以一次使用每一行并发送邮件。