我想检查我的上一个文件是否早于24小时。 (django中的项目)
我的目录中有许多zip软件包,因此我必须用这部分代码ls -1 | sort -n | tail -n1
“过滤”最后一个。
.sh文件中的代码:
#!/bin/bash
file="$HOME/path_directory ls -1 | sort -n | tail -n1"
current=`date +%s`;
last_modified=`stat -c "%Y" $file`;
if [ $(($current-$last_modified)) -gt 86400 ]; then
echo "File is older that 24 hours" | mailx noreply@address -s "Older than 24 hours" me@mailmail.com
else
echo "File is up to date.";
fi;
这是我得到的错误:
stat: invalid option -- '1'
Try 'stat --help' for more information.
/path_directory/imported_file.sh: line 9: 1538734802-: syntax error: operand expected (error token is "-")
如果有人做了类似的事情,请提示。
答案 0 :(得分:4)
您可以获得在1440分钟(86400秒)之前已被修改的目录中的文件列表,可以为此使用find
:
find -maxdepth 1 -mmin +1440
因此它将选择此目录中的所有文件(无子目录),更改时间以分钟为单位,早于1440。
+
中的+1440
很重要,因为否则您将获得完全 1440分钟未修改的文件。
您还可以使用-mtime
指定天数:
find -maxdepth 1 -mtime +1
如果需要所有文件(在此目录和子目录中),则可以删除-maxdepth 1
。
如果只想包含文件等,则可以添加-type f
。有关更多标志和(过滤)选项的信息,请阅读manpage of find
。
答案 1 :(得分:3)
我建议您尝试一下:
if test "`find file -mtime +1`"
但是如果您坚持要解决,可以将其更改为以下内容:
#!/bin/bash
file="$HOME/path_directory ls -1 | sort -n | tail -n1"
current=$(date +%s);
last_modified=$(stat -c "%Y" $file);
if [ $((current - last_modified)) -gt 86400 ]; then
echo "File is older that 24 hours" | mailx noreply@address -s "Older than 24 hours" me@mailmail.com
else
echo "File is up to date.";
fi;
答案 2 :(得分:2)
文件变量格式不正确,我想你想要类似的东西
file=`find $HOME/path_directory | sort -n | tail -n1`
或
file=$( find $HOME/path_directory | sort -n | tail -n1)
如果您喜欢现代方式