আমি জুন, জুলাই এবং আগস্ট মাসের মধ্যে তৈরি ফাইলগুলি অনুসন্ধান করার চেষ্টা করছি। আমি এই পদ্ধতিটি ব্যবহার করেছি
ls -lrth|awk '/[Jun][Jul][Aug]/ {print}'
কিন্তু এটা কাজ করছে না।
আমি জুন, জুলাই এবং আগস্ট মাসের মধ্যে তৈরি ফাইলগুলি অনুসন্ধান করার চেষ্টা করছি। আমি এই পদ্ধতিটি ব্যবহার করেছি
ls -lrth|awk '/[Jun][Jul][Aug]/ {print}'
কিন্তু এটা কাজ করছে না।
উত্তর:
আপনি একাধিক নিদর্শন এর সাথে মেলাতে পারেন:
awk '/Jun/ || /July/ || /Aug/' <(ls -lrh)
এটি জুন, জুলাই বা আগস্ট উভয়ের জন্য সমস্ত ম্যাচ ফেরত দেয় You আপনার print
বিবৃতিটির প্রয়োজন নেই কারণ এটি awk
ডিফল্ট ক্রিয়া।
awk '/Jun|Jul|Aug/'
অথবাawk '/Ju[nl]|Aug/'
একটি সাধারণ নিয়ম হিসাবে , ls এর আউটপুটকে পার্স করা খুব খারাপ ধারণা । আপনি যা চান তা করার একটি আরও ভাল উপায়
stat -c "%n %y" * | grep 2013-0[678]
বিকল্পভাবে, ফাইল নামটি নিজেই একটি তারিখ যেখানে অসম্ভব ক্ষেত্রে রক্ষা করতে শুধুমাত্র শেষ ক্ষেত্রটি পরীক্ষা করুন:
stat -c "%n %y" *| awk '$NF ~ /2013-0[678]/'
থেকে man stat
:
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each use of FORMAT
%y time of last modification, human-readable
%n file name
| awk '$NF ~ /2013-0[678]/'
কেবলমাত্র সর্বশেষ আউটপুট ক্ষেত্রটি পরীক্ষা করতে, (অসম্ভব?) এমনকি কোনও ফাইলের নাম রেজেজের সাথে মেলে এমনকি তারিখটি না থাকলেও পরিবর্তন করুন।
ls
মানুষের পাঠযোগ্য হিসাবে ফাইলগুলির তথ্য প্রদর্শন করার জন্য একটি আদেশ। স্ক্রিপ্টগুলিতে এটি ব্যবহার করবেন না ।
নির্দিষ্ট মানদণ্ডের সাথে মেলে ডিরেক্টরি ট্রিতে ফাইলগুলি সন্ধানের আদেশ find
। আপনার যদি জিএনইউ সন্ধান (যেমন অ-এমবেডড লিনাক্স বা সাইগউইন) বা ফ্রিবিএসডি সন্ধান (যেমন ফ্রিবিএসডি বা ওএসএক্স) থাকে তবে আপনি -newermt
নির্দিষ্ট তারিখের পরে শেষবার সংশোধিত ফাইলগুলি মেলানোর জন্য ব্যবহার করতে পারেন ।
find . -newermt '1 June' ! -newermt '1 September' -print
স্ক্রিপ্টটি যখন চালানো হয় তখন ক্যালেন্ডার বছরের চেয়ে আপনি একটি নির্দিষ্ট বছরে ফাইলগুলি মেলাতে চাইলে একটি বছর যুক্ত করুন।
যদি আপনার অনুসন্ধানের বাস্তবায়ন না হয় তবে আপনাকে এটি -newermt
করতে হবে -newer
যা find
একটি নির্দিষ্ট ফাইলের সাথে পাওয়া ফাইলটির তারিখের সাথে তুলনা করে । ব্যবহার touch
তারিখ যে আপনি একটি সীমানা হিসাবে ব্যবহার করতে চান অস্থায়ী ফাইল তৈরি করুন।
dir=$(mktemp -d)
touch -d 201306010000 "$dir/from"
touch -d 201309010000 "$dir/to"
find . -newer "$dir/from" ! -newer "$dir/to" -print
rm -r "$dir"
[...]
কনস্ট্রাক্টটি একটি একক অক্ষরের সাথে মেলে যা বন্ধনীগুলির মধ্যে যে কোনও একটি চরিত্র হতে পারে। সুতরাং আপনার অভিব্যক্তিJJA
বাJug
(J
থেকে[Jun]
,u
থেকে[Jul]
এবংg
থেকে[Aug]
) মিলছে তবে আপনি যে মাসের সংক্ষিপ্তসারটি মিলানোর প্রত্যাশা করেছিলেন তা নয়।