উত্তর:
বাশ গ্লোববিং প্রসারিত করেছেন (প্রথম পরীক্ষা, তারপরে প্রতিধ্বনিটি সরিয়ে দিন):
shopt -s extglob
echo rm -rf !(A)
shopt | grep ext
প্লাগ-ইন সক্ষম করা আছে কিনা তা দিয়ে আপনি দেখতে পারবেন।
find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;
কি সম্পর্কে:
mv A /tmp/
rm * -rf
mv /tmp/A .
এটি অন্যান্য কমান্ডগুলির মধ্যে টাইপের কিছু "দুর্বলতা" এড়িয়ে চলে।
কিছুটা এইরকম
find . -type d -not -name A -exec rm -ir {} \;
করা উচিত.
সম্পাদন করা
এটা সত্যই হওয়া উচিত
find . -type d -maxdepth 1 -not -name A -exec rm -ir {} \;
find
এ এর নীচে পুনরাবৃত্তি থেকে রোধ করতে
আমি সাধারণত একটি এলএস কমান্ড কাজ করে এটি করি যা এটি প্রথমে পায়। আমি ইউনিক্স মেশিনে নেই, তবে এরকম কিছু:
ls -lda "[^ এ]"
এটি ঠিক হয়ে গেলে, কমান্ডে পাইপ করুন
ls -lda "[^ এ]" | | xargs rm -rf
আমার নিয়মিত প্রকাশটি যদি ভুল হয় তবে উপরে সম্পাদনা করতে দ্বিধা বোধ করবেন ...
এখানে একটি উপায়। এই ধরণের জিনিস সম্পর্কে সতর্ক থাকুন, যদিও এটি এতই শক্তিশালী যে এটি কেবল ভাল বা খারাপের জন্যই ব্যবহার করা যেতে পারে ...
* টাইপ ডি | grep -v "^ এ" | xargs rm -rf
কিছু লোকেরা যেমন-এক্সেক এবং আরএম দিয়ে-প্রিন্ট 0 ছাড়াই এবং এক্স-জার্গে -0 ছাড়াই দেখিয়েছেন তেমন ব্যবহারটি ব্যবহার করবেন না। এটি ফাঁকা স্থান বা নতুন লাইনের সাথে ফাইলের নামগুলিতে বিভ্রান্ত হবে:
$ mkdir 'foo foo'
$ mkdir foo$'\n'foo
$ find . -type d -exec rm -ir {} \;
rm: cannot remove directory `.'
rm: remove directory `./foo\nfoo'? y
find: `./foo\nfoo': No such file or directory
rm: remove directory `./foo foo'? y
find: `./foo foo': No such file or directory
পরিবর্তে xargs -0, '-exec কমান্ড {} +' দিয়ে ফাইন্ড-প্রিন্ট 0 ব্যবহার করুন, বা যদি আপনার অনুসন্ধান সমর্থন করে তবে এটি মুছে ফেলুন।