কমান্ড 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প্যারামিটার। আমি এটি কাজ করতে পারি না। (আমি সমস্ত জেপিজি ফাইলগুলি এর মাধ্যমে একটি ফোল্ডার থেকে তার মূল ডিরেক্টরিতে স্থানান্তরিত করার চেষ্টা করছিলাম - এবং নিজেই এটি শেষ করে দিয়েছি ...)