বাশ - পিডাব্লুডিতে ফাইল নয় সমস্ত ডিরেক্টরি (এবং সামগ্রী) সরিয়ে ফেলুন


19

আমি পিডাব্লুডি থেকে সমস্ত ডিরেক্টরি মুছে ফেলতে চাই তবে পিডব্লুডিতে ফাইলগুলি একা রেখে দেব। যদি আমার পিডব্লিউডির বিষয়বস্তু হয়:

mydir1
mydir2
myfile1
myfile2

তারপরে আমি ঠিক রেখে যেতে চাই

myfile1
myfile2

আমি ধরে নিলাম যে আমার ব্যবহার করা দরকার rm -r -i

আমি কি সঠিক?

উত্তর:


10

না যা আপনাকে "অনুপস্থিত অপরেন্ড" দেয় যেহেতু আপনি কোনও কিছুই নির্দিষ্ট করেননি। একটি রাখলে *ফাইলগুলির জন্য অনুরোধ জানানো হবে।

আমি চেষ্টা করে দেখি:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

mindepth 1অগ্রাহ্য করবে .ফলাফল থেকে, maxdepth 1ডিরেক্টরি যে যাহাই হউক না কেন মোছা হয়েছে হবে (সুতরাং একটি সতর্কবার্তা তৈরি) অধীনে করার চেষ্টা বাদ হবে। তবে আপনি যদি কিছু "নির্দোষ" সতর্কতা অবলম্বন করতে সম্মত হন তবে বাস্তবে আপনি উভয়কেই বাইরে রেখে যেতে পারেন।


21

আমি এটি কোথাও খুঁজে পেয়েছি:

rm -r */

যেতে সহজ উপায় মনে হচ্ছে। আপনার উদাহরণ সহ, আপনাকে প্রতিটি কেস নিশ্চিত করতে হবে, যদি আপনার কাছে 5 টি ফাইল থাকে তবে এটি ঠিক আছে, তবে বড় ফাইল স্ট্রাকচারের সাথে একটি ইন্টারেক্টিভ মোডটি যাওয়ার উপায় নয় ... ঠিক যেমন একটি পরামর্শ হিসাবে, যদি এটি গুরুত্বপূর্ণ তথ্য হয় তবে একটি তৈরি করুন ব্যাকআপ ...


1
এটি প্রতীকী লিঙ্কগুলিও অনুসরণ করবে, যা সম্ভবত এখানে পছন্দসই নয়।
জেডিবিপি

8

ব্যবহার

rm -rf ./*/

এটি ইন্টারেক্টিভ মোডকে এড়িয়ে চলে আপনার স্থানীয় ডিরেক্টরিতে কেবল ডিরেক্টরিগুলি মুছে দেয়।


হিসাবে JdeBP নির্দিষ্ট উপর মার্টিন এর অনুরূপ উত্তর , যদি বর্তমান (সর্বোচ্চ-স্তরের) ডিরেক্টরিতে অন্যান্য ডিরেক্টরি প্রতি সিম্বলিক লিঙ্ক উপস্থিত রয়েছে, তারা মুছে দেবে (এমনকি যদি তারা অথবা বর্তমান ডিরেক্টরির অধীনস্থ নয়)।
স্কট


-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.