find:输出到带注释的文件

时间:2015-08-18 12:57:39

标签: bash find

我有一行将md5sum生成到包含文件的文件中:

find / -type f \( -name "*.pl" -o -name "*.py" \) | md5sum *.pl *.py >> sum.txt

sum.txt将输出:

d41d8cd98f00b204e9800998ecf8427e  file.pl
60b725f10c9c85c70d97880dfe8191b3  file.py

我需要在文件名后包含服务器名称,最好是读取$ HOSTNAME,因为脚本将在不同的服务器上运行,如下所示:

d41d8cd98f00b204e9800998ecf8427e  file.pl  host.one.com
60b725f10c9c85c70d97880dfe8191b3  file.py  host.one.com

2 个答案:

答案 0 :(得分:1)

该命令将搜索所有*.pl*.py个文件。 find将执行md5sum命令,并且每个行都会添加一个主机名。这两个命令都会生成相同的输出:

find / -type f \( -name "*.pl" -o -name "*.py" \) -exec md5sum {} + | awk -v ORS="  $HOSTNAME\n" 1. >> sum.txt

find / -type f -name "*.p[ly]" -exec md5sum {} + |awk -v "h=$HOSTNAME" '{print $0,h}' >> sum.txt

答案 1 :(得分:1)

另一种方法是使用find -regex并使用sed附加主机名:

find / -type f -regex '.*\.\(py\|pl\)' -exec md5sum {} + | sed 's/$/ '"$HOSTNAME'/'