তারিখের চেয়ে পুরানো অন্য ডিরেক্টরিতে ফাইলগুলি সরান


28

আমি আজ থেকে বছরের চেয়ে বেশি পুরানো ফাইলগুলি সরিয়ে নেওয়ার একটি সমাধান খুঁজছি। আমার লগ বিভাজন পূর্ণ হয়ে উঠছে, তবে আমি সেগুলি সরাতে পারি না। এগুলি দীর্ঘ দীর্ঘ সময়ের জন্য প্রয়োজন। যাইহোক, আমি একটি সমাধান নিয়ে এসেছি:

find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;

এই কাজ করবে? " -মটাইম 365 " এর কারণে জিজ্ঞাসা করা কি এই ফাইলটি আজ থেকে বছরের চেয়ে বেশি পুরানো ফাইলগুলিকে নতুন জায়গায় নিয়ে যাবে?

ধন্যবাদ!

উত্তর:


40

আপনি প্রায় ঠিক আছেন। -mtime 365হ'ল 365 দিনের পুরানো সমস্ত ফাইল। আপনি 365 দিন বা তার বেশি বয়সীদের চান, যার অর্থ +এই জাতীয় সংখ্যার আগে একটি যোগ করা -mtime +365

আপনি -maxdepth 1পতাকাটিতে আগ্রহীও হতে পারেন , যা আপনাকে সাব ডিরেক্টরিতে আইটেমগুলি সরিয়ে নেওয়া থেকে বাধা দেয়।

আপনি যদি নিশ্চিত হতে চান যে আপনি কেবল ফাইলগুলিই চলছেন তবে ডিরেক্টরি নয়, -type fলাইনে যুক্ত করুন।

লাইনের শেষে আমরা যুক্ত \;করেছি যাতে findজানে যে আমরা যে কমান্ডটি চালিয়ে যাচ্ছি তার শেষ।

সুতরাং লাইনটি হওয়া উচিত:

find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;

নিরাপদ দিকে থাকতে, এমভির পরিবর্তে কেবল একটি এলএস-এল করেই শুরু করুন - এমভি দিয়ে পুনরায় চালানোর আগে আপনি যে ফাইলটি চান ঠিক তা পাচ্ছেন তা আগেই পরীক্ষা করে দেখতে পারেন:

find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;

3
মনে রাখবেন যে mtimeহয় সংশোধন সময় (যা কি আপনি সম্ভবত চান মত শোনায় - সময় এটা অধিকাংশ)। যদি এই লগগুলি প্রায়শই পড়তে / উল্লেখ করা হয় তবে আপনি ব্যবহার করতে চাইতে পারেন -atime(শেষ অ্যাক্সেসের সময়)।
voretaq7

2
এই লাইনের শেষে ব্যাকস্ল্যাশ কী করে?
বেন লিয়ানাজ

1
@ বেনলিয়ানাজ ব্যাকস্ল্যাশ সেমিকোলনের জন্য একটি অনুসরণকারী চরিত্র যা অনুসরণ করে। সেমিকোলন অর্থ execবিবৃতিটির সমাপ্তি । ম্যান পেজ দেখুন find
জেনি ডি বলছেন মনিকাকে

4

উপরের সমাধানগুলি ব্যবহার করার সময় সতর্কতা অবলম্বন করুন, আমি সেগুলি ব্যবহার করেছি এবং সমস্ত সাবফোল্ডারে সমস্ত ফাইল সরিয়ে নিয়েছি !!!!

এই কমান্ডটি সমস্ত উত্স / উত্স ডিরেক্টরিতে এবং সমস্ত সাবফোল্ডারগুলিকে উত্স ডিরেক্টরিতে আনা হয়:

find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;

পরিবর্তে, কেবলমাত্র / সোর্স ডিরেক্টরিতে অন্তর্ভুক্ত ফাইলগুলির জন্য -maxdepth 1 বিকল্পটি ব্যবহার করুন

find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

সর্বাধিক রেট করা উত্তরে এই নোটটি রয়েছে এবং এটি ব্যবহারের পরামর্শ দেয় -type f। আপনি কি এর পরিবর্তে সাবফোল্ডারগুলি সরানোর অর্থ বোঝাতে চেয়েছিলেন কিন্তু সেগুলির বিষয়বস্তুগুলি সেগুলি থেকে সরানোর পরিবর্তে সাবফোল্ডারে রয়ে গেছে বা ...?
অস্টিনিয়ান

1
না, আমি বোঝাতে চাইছি যে 'সন্ধান করুন' সমস্ত ফাইলগুলিকে / সোর্সডাইরেক্টরিতে এবং সমস্ত সাবফোল্ডারগুলিকে সেই / সোর্সডাইরেক্টরির মধ্যে খুঁজে পাবেন, যা আমি সেই সময়ে ভাবিনি। '-ম্যাক্সডেপথ 1' 'সন্ধান'টিকে কেবল / সর্বাধিক ডিরেক্টরিতে সীমাবদ্ধ করে
হ্যারিগলগগুই

বিটিডাব্লু, আমি সর্বাধিক রেটযুক্ত উত্তরের একটি মন্তব্য হিসাবে এটি করতে পারি, যা একটি ভাল উত্তর ছিল, তবে আমার সুনাম নেই। :)
হার্লিগল্ফগুই

0

আপনি এই আদেশটি ব্যবহার করতে পারেন এবং উল্লেখ করতে পারেন যে আপনি কেবল ফাইলের জন্য সন্ধান করেন, ডিরেক্টরি নয় এবং ফাইলটি এক বছরেরও বেশি পুরানো

find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;

কেন সে ব্যবহার করবে rm? আপনার কমান্ড লগ ফাইল এবং সম্ভবত গন্তব্য ডিরেক্টরি উভয়ই মুছে ফেলে।
সোভেন

ওপস, আমার ভুল, আমি মনে করি @mYzk এই ফাইলগুলি সরাতে চাই। সম্পাদিত
cuonglm

0

যদি ফাইলগুলি প্রায়শই অ্যাক্সেস করা হয় তবে আপনি নীচের কমান্ডটি টাইম সহ ব্যবহার করতে পারেন

find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;

0
$ find /sourcedirectory/ -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

find: missing argument to `-exec'

সঠিক থেকে শেষ ফরোয়ার্ড স্ল্যাশ সরানো হবে ing /sourcedirectory/

$ find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;

আমার পরীক্ষাগুলিতে, আমি find: missing argumentত্রুটিটির প্রতিলিপি করতে সক্ষম হইনি , তবে আমি সম্মত হই যে এর থেকে পিছনে স্ল্যাশ বাদ দেওয়া /sourcedirectoryসঠিক।
guzzijason
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.