পুনরাবৃত্তভাবে ফাইলগুলি সরান those আকারগুলি 1MB এর চেয়ে কম


13

ডিরেক্টরি থেকে 1MB এর চেয়ে কম আকারের ফাইলগুলি কীভাবে আমি পুনরাবৃত্তভাবে মুছে ফেলব?


উত্তর:


21

এটি দিয়ে করা যেতে পারে find:

find . -type f -size -1M -exec rm {} +

দ্রষ্টব্য যে এটি পুনরাবৃত্তভাবে উপ-ডিরেক্টরিতে নেমে যাবে এবং নিঃশর্তভাবে 1 মেগাবাইটের চেয়ে ছোট সমস্ত ফাইল মুছবে। সতর্ক হোন.


আপনি পাথ যুক্তিটি অনুপস্থিতfind

@ ব্যবহারহীন: এটি জিএনইউ find। :)
সোভেন মারনাচ

2
@ ড্যানিয়েল অ্যান্ডারসন: সিস্টেমের findসীমাবদ্ধতার সাথে মিলিত হওয়ার জন্য ডাকা প্রক্রিয়াটির পক্ষে যুক্তিগুলির সংখ্যা সীমাবদ্ধ করে, এর বিপরীতে rm *, যা একক প্রক্রিয়া আহবান হিসাবে গ্যারান্টিযুক্ত । প্রয়োজনে findএকাধিক উদাহরণ চাইবে rm। এবং আমি পুরোপুরি নিশ্চিত যে নিউলাইন চরিত্রগুলি সহ বিশেষ অক্ষরগুলি সঠিকভাবে আচরণ করা হবে। আমি নমনীয়তার কারণে -exec rmবেশি পছন্দ করি -delete- উদাহরণস্বরূপ, পরবর্তীরা রাইট-সুরক্ষিত ফাইলগুলি মোছার কোনও উপায় সরবরাহ করে না।
সোভেন মারনাচ

1
@ ইনভোকার: আপনার পরিবর্তনটি ভুল হওয়ার কারণে আমি এটি পরিবর্তন করেছি। -1Mইচ্ছামত এক মেগাবাইটের চেয়ে কম মানে। আপনার সংস্করণটি হ'ল এক মেগাবাইট আকারের সমস্ত ফাইল মুছবে, যা কিছুটা অর্থহীন অপারেশন বলে মনে হচ্ছে।
সোভেন মারনাচ

2
আগ্রহী যে কারও জন্য, আপনি যদি 1 এম এর চেয়ে বড় সমস্ত ফাইল সরিয়ে দিতে চান তবে কমান্ডটি ব্যবহার করুন find . -type f -size +1M -exec rm {} +। -1 এম এর পরিবর্তে + 1 এম নোট করুন।
chessofnerd

10

এটি কাজ করা উচিত:

$ find <directory> -type f -size -1M -delete

আমি মনে করি না 1 মিমি থেকে আমাদের হাইফেন আউট করা দরকার।
ইনভোকার 14

2
@ ইনভোকার, আমি বিশ্বাস করি যে -সাইনটি একটি বিয়োগ চিহ্ন যার অর্থ "1M এর চেয়ে কম"। আপনি চালনা করলে find <directory> -type f -size +1M -deleteআপনি 1 এম এর চেয়ে বড় সমস্ত ফাইল মুছবেন ।
chessofnerd

হ্যাঁ আপনি ঠিক আমার খারাপ
ইনভোকার

2

কেবল বৈচিত্র্য এবং একটি সম্ভাব্য (সম্ভবত প্রান্তিক) পারফরম্যান্স লাভের জন্য:

find <directory> -type f -size -1M -print0  | xargs -0 rm

এটি কীভাবে দ্রুত হওয়ার কথা? এটি একটি অতিরিক্ত xargsপ্রক্রিয়া শুরু করে।
সোভেন মারনাচ

এখন আপনার একই ব্লক ডিভাইসের জন্য দুটি সিপিইউ প্রার্থী হতে পারে ! আরও সংবেদনশীলভাবে, স্ট্যাটিক / রিডডির ক্রিয়াকলাপগুলি আনলিংক ক্রিয়াকলাপের দ্বারা সিঙ্ক্রোনজলি ব্লক করা হয়নি। এটা উত্তম হওয়ার সম্ভাবনা স্পষ্টত কিনা সাবট্রি আকারের উপর নির্ভর করে, ইত্যাদি ফাইলের সংখ্যা, ডিভাইসের

1

চেষ্টা

অনুসন্ধান . -সাইজ -1 এম-এক্সেক আরএম {} \;


1
এটি নন-জিএনইউ ব্যবহারকারীদের জন্য দুর্দান্ত। ধন্যবাদ! @ \;+
সোভেনের

-1

আপনি এই লিঙ্কটি চেকআউট করতে পারেন http://ayaz.wordpress.com/2008/02/05/bash-quickly-deleting-empty-files-in-a-directory/ , এতে আপনি যা চান ঠিক তা আছে।

for file in *;
  do
    file_size=$(du $file | awk '{print $1}');
    if [ $file_size == 0 ]; then
        echo "Deleting empty file $file with file size $file_size!";
        echo "rm -f $file";
    fi;
done

আপনি লুপের জন্য সমস্ত ফাইলের মাধ্যমে পুনরাবৃত্তি করতে পারেন এবং তারপরে উপরের উদাহরণের মতো ফাইলসাইজটি অনুসন্ধান করতে ডু এবং অ্যাড ব্যবহার করতে পারেন।


এসও-তে উত্তরগুলি স্ব-অন্তর্ভুক্ত হওয়া উচিত - কেবল লিঙ্কটি পোস্ট করবেন না। (অধিকন্তু, লিঙ্ক পোস্টে কোড খালি ফাইল 1M চেয়ে ছোট ফাইল চেয়ে মুছে ফেলে বরং।)
সেভেন Marnach

@ সোভেনমার্নাচ আমরা প্রদত্ত কোড উদাহরণ লিঙ্কে $ file_size <1M ব্যবহার করতে পারি না।

না, আমরা পারি না, যেহেতু শেলটি বুঝতে পারে না 1M
সোভেন মারনাচ

1 এম দ্বারা আমার অর্থ 1048576 1MB কে বাইটে রূপান্তরিত করা হয়েছে

1
ঠিক আছে, আপনি যদি পরীক্ষা করে থাকেন যে এটি যদি সত্যিই কাজ করে এবং কোডটি আপনার উত্তরে অনুলিপি করে, তবে এটি একটি উত্তরে পরিণত হতে পারে।
সোভেন মারনাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.