TL; ড
find ./myfolder -mindepth 1 -maxdepth 1 -type d -not -name test2 \
-exec echo rm -rf '{}' \;
ফাইলগুলির তালিকায় সন্তুষ্ট হলে প্রতিধ্বনি সরান।
ব্যবহারের মাধ্যমে -mindepth 1
নিশ্চিত হবে যে শীর্ষ ডিরেক্টরিটি নির্বাচিত নয়।
$ find ./myfolder -mindepth 1 -type d
./myfolder/test2
./myfolder/test2/one
./myfolder/test2/two
./myfolder/test
./myfolder/test/a1
./myfolder/test/a1/a2
./myfolder/test/a1/a2/a3
কিন্তু একটি ভিতরে ভিতরে subdirs এড়ানো -not -name test2
হবে নাtest2
:
$ find ./myfolder -mindepth 1 -type d -not -name 'test2'
./myfolder/test2/one
./myfolder/test2/two
./myfolder/test
./myfolder/test/a1
./myfolder/test/a1/a2
./myfolder/test/a1/a2/a3
এটি করার জন্য, আপনার প্রুনের মতো কিছু দরকার:
$ find ./myfolder -mindepth 1 -name test2 -prune -o -type d -print
./myfolder/test
./myfolder/test/a1
./myfolder/test/a1/a2
./myfolder/test/a1/a2/a3
তবেdelete
এটি ব্যবহার হিসাবে ব্যবহার করবেন না depth
এবং এটি দীর্ঘতম পথ থেকে মুছে ফেলা শুরু করবে:
$ find ./myfolder -depth -mindepth 1 -name test2 -prune -o -type d -print
./myfolder/test/a1/a2/a3
./myfolder/test/a1/a2
./myfolder/test/a1
./myfolder/test
হয় ব্যবহার করুন rm -rf
( echo
আপনি যদি মুছতে চান তবে সরান ):
$ find ./myfolder -mindepth 1 -name test2 -prune -o -type d -exec echo rm -rf '{}' \;
rm -rf ./myfolder/test
rm -rf ./myfolder/test/a1
rm -rf ./myfolder/test/a1/a2
rm -rf ./myfolder/test/a1/a2/a3
অথবা, এছাড়াও ব্যবহার maxdepth
যদি আপনার যা দরকার তা ডিরেক্টরি (এবং সবকিছু ভিতরে) মুছে ফেলে (অপসারণ করা হয় echo
আসলে নিশ্চিহ্ন):
$ find ./myfolder -mindepth 1 -maxdepth 1 -type d -not -name test2 -exec echo rm -rf '{}' \;
rm -rf ./myfolder/test
-delete
ডিরেক্টরিটি ফাঁকা না থাকলে একটি এখনও ব্যর্থ হবে:
$ find ./myfolder -mindepth 1 -maxdepth 1 -type d -not -name test2 -delete
find: cannot delete ‘./myfolder/test’: Directory not empty