我需要检查远程服务器中的文件可用性,并根据文件可用性我需要制定 if 条件。
我已在 shell 脚本中尝试了以下命令来列出今天生成的远程目录中的文件。
FILE=`ssh ${USER}@${HOST} '( cd /home/oracle/SABARISH/logs/sftp && ls -l --time-style=+%D | grep $(date +%D) | grep -v '^d' | awk "'{print $NF}'")' `
echo ${FILE}
上述命令不会产生任何输出。我如何解决它。
一旦它产生输出,如果文件存在,我如何从中生成 if 语句?
答案1
正如您在评论中提到的,您想要检查远程目录中当前日期的文件,您可以通过以下方式执行此操作:
FILE=$(ssh -q "$USER"@"$HOST" 'find /home/oracle/SABARISH/logs/sftp -type f -daystart -mtime -1 | wc -l')
if test "$FILE" -eq 0; then
exit
else
# do your SFTP stuff here
fi
从man find
:
-daystart
Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24 hours ago. This option only affects tests which appear later on the command line.