কমান্ড find . -name '*2015*' -mmin +1440 -ls
সম্ভবত আপনি যা করতে চান তা করবে। বিস্তারিত জানার জন্য নীচে দেখুন।
আপনার প্রথম আদেশ ছিল -name 2015
। এটি কাজ করে না কারণ এটি কেবল এমন ফাইলগুলি খুঁজে পায় যার নামগুলি হুবহু 2015
এবং এর মধ্যে অন্য কোনও অক্ষর নেই।
আপনার দ্বিতীয় কমান্ড, find . -name *2015* -mtime +1 -exec ls -ltrh {} \;
বেশ কয়েকটি কারণে ব্যর্থ হতে পারে:
1. অব্যর্থ *
অক্ষরগুলি শেল দ্বারা প্রসারিত হয়, তারপরে প্রেরণ করা হয় find
।
বর্তমান ডিরেক্টরিতে যদি সরাসরি কোনও ফাইল find ...
থাকে 2015
( আপনি সেই কমান্ডটি চালানোর সময় আপনি ছিলেন এমন ) যার নামগুলি রয়েছে (এবং এটি দিয়ে শুরু করবেন না .
), তবে শেলটি*2015*
সেই ফাইলের নামের তালিকায় প্রসারিত হবে, তারপরে পাস হবে যুক্তি হিসাবে তালিকা find
। এটি আপনি যা চান তা নয় - পরিবর্তে, আপনি *2015*
অনুসন্ধানের জন্য একটি আর্গুমেন্ট হিসাবে আক্ষরিকভাবে পাস করতে চান , যাতে find
শেলটি নয় এবং এটি খুঁজে পেতে পারে যে কোনও ফাইল এর সাথে মেলে।
সমস্যাটি সমাধান করার জন্য, উদ্ধৃতি *2015*
। এটি করার জন্য তিনটি সাধারণ উপায় রয়েছে:
'*2015*'
(যেমন, find . -name '*2015*' -mtime +1 -exec ls -ltrh {} \;
)
"*2015*"
(যেমন, find . -name "*2015*" -mtime +1 -exec ls -ltrh {} \;
)
\*2015\*
(যেমন, find . -name \*2015\* -mtime +1 -exec ls -ltrh {} \;
)
আমি এটি হিসাবে একক উদ্ধৃতি দিয়ে এটি লেখার পরামর্শ দিচ্ছি , কারণ:'*2015*'
তবে এক্ষেত্রে এটা আসলে কিছু যায় আসে না। '
এবং "
উভয়ই *
একইরকম আচরণ করে এবং \
বোঝা শক্ত করে তুলতে উদ্ধৃতিটির জন্য ভাবটি যথেষ্ট জটিল নয় isn't
2. -mtime +1
শুধুমাত্র নির্বাচন ফাইল মডিফাই দুই বা ততোধিক দিন আগে।
যেমনটি man find
বলেছেন:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
-mtime n
File's data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
-atime n
File was last accessed n*24 hours ago. When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
মনে করুন একটি ফাইল 47 ঘন্টা আগে সংশোধিত হয়েছিল। কত 24-ঘন্টা সময়সীমার যে, জিনিসটা find
চক্রের নিচে : এটা এক 24 ঘন্টা সময়সীমার আগে। তবে -mtime +1
কেবলমাত্র সেই ফাইলগুলির সাথে মেলে যাঁর পরিবর্তনের সময়গুলি 24 ঘন্টা আগে খুব বেশি কঠোর হয় । গতকাল থেকে ফাইলগুলি মেলে না।
দেখুন কেন -মটাইম +1 কেবল 2 দিনের চেয়ে পুরানো ফাইলগুলি ফেরত দেয়? আরও তথ্যের জন্য, স্টেল্ড্রাইভার দ্বারা প্রস্তাবিত ।
ফাইল খুঁজতে সর্বশেষ সংশোধিত যে কোন সময় চেয়ে বেশি 24 ঘন্টা আগে , আমি পরিবর্তে যেমন stipulating করার পরামর্শ দিই 1440 মিনিট আগে সঙ্গে -mmin +1440
:
find . -name '*2015*' -mmin +1440 -exec ls -ltrh {} \;
কিছু পাঠক হয়তো ভাবছেন কেন আমি উদ্ধৃতি দিলাম না {}
। কিছু লোক মানবকে {}
স্মরণ করিয়ে দেওয়ার জন্য উদ্ধৃতি দিয়ে থাকে যে এটি বন্ধনী সম্প্রসারণের অভিব্যক্তি নয় । বোর্ন ধাঁচের শাঁস (যেমন ব্যাশ ) না প্রয়োজন, {}
কিছুই ভিতরে উদ্ধৃত করা হয়। হতে পারে কিছু বোর্ন-স্টাইলের শেল এটি বিশেষভাবে ব্যবহার করে; এই কারণেই কিছু ব্যবহারকারীরা এটি উদ্ধৃত করেছেন। তবে একটি ভুল ধারণাও রয়েছে যে এক সময় অবশ্যই উদ্ধৃতি করা উচিত {}
তাই -exec
স্পেস সহ ফাইলের নামগুলি সঠিকভাবে পরিচালনা করে। যে; র মিথ্যা: সঙ্গে {}
বা '{}'
, find
পায় একই আর্গুমেন্ট, যেমন শেল কোট সরিয়ে ফেলা হবে ক্ষণস্থায়ী আগে '{}'
থেকেfind
। এই ভুল ধারণাটি মোকাবেলার জন্য, আমি উদ্ধৃতি দিচ্ছি না {}
, তবে এটি শৈলীর বিষয় - যদি আপনি {}
শেল কীভাবে চিকিত্সা করছেন না {
এবং }
বিশেষভাবে এটি নথিভুক্ত করতে পছন্দ করেন তবে তা ঠিক।
আমি আপনাকে প্রস্তাব দিয়েছি হয় হয় আপনার ls
আদেশটি পরিবর্তন করুন , বা (যেমন মুড়ু পরামর্শ দিয়েছেন ) find
এর -ls
পদক্ষেপের সাথে এটি প্রতিস্থাপন করুন । ls -ltrh
সম্ভবত আপনি যা করতে চান তা করছেন না কারণ এটি পাওয়া প্রতিটি ফাইলের জন্য এটি পৃথকভাবে চালিত হয় এবং সুতরাং -t
এবং -r
পতাকাগুলি, যা বাছাইকরণ নির্দিষ্ট করে, অপ্রাসঙ্গিক।
যদিও আউটপুটটি এর চেয়ে কিছুটা আলাদাভাবে ফর্ম্যাট করা হবে তবে ls -l
ব্যবহার -ls
করা সহজ এবং সহজ।
find . -name '*2015*' -mmin +1440 -ls
বা যদি আপনি স্থির করেন তবে আপনাকে কেবলমাত্র ফাইলটির নাম তালিকাভুক্ত করতে হবে (যার সাথে সম্পর্কিত তাদের পাথ সহ .
), আপনি কেবল কোনও পদক্ষেপ নির্দিষ্ট করতে পারবেন না, যার ফলে ডিফল্ট -print
ক্রিয়াটি ব্যবহৃত হবে:
find . -name '*2015*' -mmin +1440
find
অংশ আমার কাছে ভালই লাগছে, কিন্তু আমি সঙ্গে সমস্যা ছিল-exec
প্যারামিটার। আমি এটি কাজ করতে পারি না। (আমি সমস্ত জেপিজি ফাইলগুলি এর মাধ্যমে একটি ফোল্ডার থেকে তার মূল ডিরেক্টরিতে স্থানান্তরিত করার চেষ্টা করছিলাম - এবং নিজেই এটি শেষ করে দিয়েছি ...)