我正在尝试使用bash在if
语句中测试文件创建时间(以秒为单位)。我需要的是创建日期,而不是修改日期。
你有没有什么想法可以做到这一点,而不使用像find
和grep
这样的命令?
我正在尝试使用bash在if
语句中测试文件创建时间(以秒为单位)。我需要的是创建日期,而不是修改日期。
你有没有什么想法可以做到这一点,而不使用像find
和grep
这样的命令?
很抱歉我不能回答有关创建时间的问题,但是对于最后修改时间,您可以使用以下方法获取时期日期,以 秒 为单位,自从文件名最后一次被修改以来:
date --utc --reference=filename +%s
那么你可以这样做:
modsecs=$(date --utc --reference=filename +%s)
nowsecs=$(date +%s)
delta=$(($nowsecs-$modsecs))
echo "File $filename was modified $delta secs ago"
if [ $delta -lt 120 ]; then
# do something
fi
更新 一种更为优雅的方法(仅修改时间):如何在bash中检查文件是否是x时间以前创建的?
这是我目前找到的最佳答案,但仅适用于修改时间:
expr `date +%s` - `stat -c %Y /home/user/my_file`
stat
:modsecs=$(stat --format '%Y' filename)
你可以像Joel的回答中那样进行数学计算。
你可以使用带有--full-time选项的ls命令
file1="file1"
file2="file2"
declare -a array
i=0
ls -go --full-time "$file1" "$file2" | { while read -r a b c d time f
do
time=${time%.*}
IFS=":"
set -- $time
hr=$1;min=$2;sec=$3
hr=$(( hr * 3600 ))
min=$(( min * 60 ))
totalsecs=$(( hr+min+sec ))
array[$i]=$totalsecs
i=$((i+1))
unset IFS
done
echo $(( ${array[0]}-${array[1]} ))
}