在我的环境中,我们将从客户端接收文件到我们的 Sftp 服务器中。 Sftp 处理文件,并通过在文件名末尾附加文件大小将其移动到另一个工具。例如,samplefile.20150706
大小为 1024 的将创建为samplefile.20150706.1024
.
如果文件大小和名称( 后的最后一部分.
)匹配,我们的工具将选择该文件并将其发送到 ETL。如果文件在该位置停留超过一小时(由于大小和名称不匹配而未处理),该工具将向我们发送警报,因为文件已存在超过一小时。
我正在寻找命令,它将提取文件名的最后部分并将其与文件大小进行比较,并最终删除该文件。
答案1
size="$(stat --printf="%s" "$path")"
path_without_extension="${path%.*}"
比较两者:
[ "${path_without_extension}.${size}" = "$path" ]
答案2
ls -l | awk '{print $5}'
给出您的文件大小
echo file_name | awk -F"." '{print $3}'
给出从名称中提取的文件大小。
a=`ls -l | awk '{print $5}'` b=`echo file_name | awk -F"." '{print $3}'` if [ $a -eq $b ] then echo "you can do your processing here" fi