आप ऐसा कर सकते हैं:
- शेल चर में वर्ष / माह / दिन मान निकालें,
- एक अस्थायी फ़ाइल बनाएँ
- का उपयोग
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