আপনি এটি করতে পারেন:
- বছর / মাস / দিনের মানগুলি শেল ভেরিয়েবলে বের করুন,
- একটি অস্থায়ী ফাইল তৈরি করুন
touch
অস্থায়ী ফাইলটির পরিবর্তনের তারিখ নির্ধারণ করতে কমান্ডটি (ঘন্টা / মিনিট / সেকেন্ডের জন্য 0 টি যোগ করা) ব্যবহার করুন
কারণ আপনার প্রশ্নটি প্রায় bash
, আপনি সম্ভবত লিনাক্স ব্যবহার করছেন। test
প্রোগ্রাম লিনাক্স ব্যবহৃত (অংশ coreutils ) টাইমস্ট্যাম্প তুলনা (জন্য এক্সটেনশন রয়েছে -nt
এবং -ot
) মধ্যে পাওয়া যায়নি POSIXtest
।
এ সম্পর্কে যৌক্তিকতায় পসিক্স মন্তব্য করেছেন test
:
নতুন আবিষ্কৃত বা কর্নশেল থেকে নেওয়া কিছু অতিরিক্ত প্রাথমিকগুলি শর্তাধীন কমান্ডের অংশ হিসাবে একটি প্রাথমিক প্রস্তাবে উপস্থিত হয়েছিল ( [[]]
): এস 1> এস 2, এস 1 <এস 2, আরআর = প্যাটার্ন, স্ট্র! = প্যাটার্ন, এফ 1 -nt এফ 2, এফ 1 -ot f2, এবং এফ 1-এফ এফ 2। শর্ত থেকে শর্তসাপেক্ষে কমান্ড সরানো হলে এগুলি পরীক্ষার ইউটিলিটিতে অগ্রসর করা হয়নি কারণ তারা sh ইউটিলিটির historicalতিহাসিক বাস্তবায়নের ক্ষেত্রে নির্মিত পরীক্ষামূলক ইউটিলিটিতে অন্তর্ভুক্ত করা হয়নি।
সেই এক্সটেনশনটি ব্যবহার করে, আপনি তখন তা করতে পারেন
- আপনি যে তারিখটির সাথে তুলনা করতে চান তার সাথে একটি অন্য অস্থায়ী ফাইল তৈরি করুন
- আপনি যে তুলনা চেয়েছিলেন তা করতে
-nt
অপারেটরটি ব্যবহার করুন test
।
এখানে একটি উদাহরণ। ওপির একটি ব্যাখ্যা প্ল্যাটফর্মের কথা উল্লেখ করেছে, সুতরাং কেউ stat
অস্থায়ী ফাইলের বিকল্প হিসাবে ব্যবহার করতে পারে ( ওএসএক্স এবং লিনাক্সের তুলনা করুন ):
#!/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