有没有办法检查目录中是否存在与excel文件具有相同修改日期的xml文件。
实施例。
ls
---
Apr 11 20:18 sample_excel.xls
Apr 11 20:18 sample1.xml
Apr 12 01:13 sample2.xml
Apr 13 14:01 sample2.xml
如何识别sample1.xml与sample_excel.xls具有相同的修改日期?
编辑:如果我的问题不清楚,请道歉。最终。目标是检查文件夹中是否存在与excel文件具有相同修改日期的xml文件。
我正在考虑采用类似下面的方法。
file1=sample_excel.xls
for xml_file in *.xml; do
if [ $file1 -nt xml_file]; then
echo $xml_file
else
echo $xml_file
fi
done
我的问题上面的代码检查file1是否比xml_file更新。我要检查它是否具有相同的修改日期。
答案 0 :(得分:0)
如果您的文件只包含Apr 11 20:18
这样的行,则可以使用以下脚本。
#!/bin/bash
while read line
do
if grep "$line" sample_excel.xls; then
echo "Date $line found in file : sample_excel.xls"
fi
done < sample1.xml
答案 1 :(得分:0)
怎么样:
#!/bin/bash
# returns the last modifiled date
function mdate() {
local stat=$(stat "$1" -c %y)
set -- $stat
echo "$1"
}
xls="sample_excel.xls"
mdate_xls=$(mdate "$xls")
for file in *xml; do
mdate_xml=$(mdate "$file")
if [[ "$mdate_xls" = "$mdate_xml" ]]; then
echo "$file"
fi
done
如果您希望将修改时间与精确度进行比较,请尝试:
#!/bin/bash
# returns the last modifiled time from the epoch
function mtime() {
echo $(stat "$1" -c %Y)
}
# returns abs of difference
function absdiff() {
local diff=$(($1 - $2))
if [[ $diff -lt 0 ]]; then
diff=$((-$diff))
fi
echo $diff
}
xls="sample_excel.xls"
mtime_xls=$(mtime "$xls")
TOL=60 # tolerance
for file in *xml; do
mtime_xml=$(mtime "$file")
if [[ $(absdiff $mtime_xml $mtime_xls) -lt $TOL ]]; then
echo "$file"
fi
done