आप ऐसा कर सकते हैं:
- शेल चर में वर्ष / माह / दिन मान निकालें,
- एक अस्थायी फ़ाइल बनाएँ
- का उपयोग
touchकमांड (घंटे / मिनट / सेकंड के लिए 0 जोड़ने) अस्थायी फ़ाइल के लिए संशोधन तिथि निर्धारित करने के
क्योंकि आपका सवाल है bash, आप लिनक्स का उपयोग कर रहे हैं। testकार्यक्रम लिनक्स में इस्तेमाल किया (के हिस्से coreutils ) टाइमस्टैम्प तुलना (के लिए एक्सटेंशन नहीं है -ntऔर -ot) में नहीं मिला POSIXtest ।
POSIX इस बारे में इस तर्क में टिप्पणी करता है test:
नव आविष्कृत या कोर्नशेल से कुछ अतिरिक्त प्राइमरी सशर्त कमांड ( [[]]): s1> s2, s1 <s2, str = pattern, str! = Pattern, f1 -nt f2, f1 -ot f2, के प्रारंभिक प्रस्ताव के रूप में दिखाई दिए। और एफ 1-एफ एफ 2। शेल की सशर्त कमान को हटाए जाने के बाद उन्हें परीक्षण उपयोगिता में आगे नहीं ले जाया गया क्योंकि उन्हें श उपयोगिता के ऐतिहासिक कार्यान्वयन में निर्मित परीक्षण उपयोगिता में शामिल नहीं किया गया है।
उस विस्तार का उपयोग करते हुए, आप तब कर सकते थे
- उस दिनांक के साथ एक और अस्थायी फ़ाइल बनाएँ जिसकी आप तुलना करना चाहते हैं
- आपके द्वारा मांगी गई तुलना करने के लिए
-ntऑपरेटर का उपयोग करें test।
यहाँ एक उदाहरण है। ओपी द्वारा एक स्पष्टीकरण ने प्लेटफ़ॉर्म का उल्लेख किया है, इसलिए कोई statअस्थायी फ़ाइलों के विकल्प के रूप में उपयोग कर सकता है ( OSX और लिनक्स की तुलना करें )
#!/bin/bash
# inspect each file...
with_tempfile() {
echo "** with temporary file $name"
test=$MYTEMP/$name
touch -t $date $test
[ $name -nt $test ] && echo "...newer"
}
# alternatively (and this is system-dependent)
with_stat() {
echo "** with stat command $name"
stat=$(stat -t "%Y%m%d%H%M" -f "%Sm" $name)
[ $stat -gt $date ] && echo "...newer"
}
MYTEMP=$(mktemp -d /var/tmp/isnewer.XXXXXX)
trap "rm -rf $MYTEMP" EXIT
for name in file-name-[0-9][0-9]*.txt
do
if [ -f "$name" ];
then
date=${name%%.txt}
date=${date/file-name-}
date=${date//-/}2359
with_tempfile $name
with_stat $name
fi
done