ডিরেক্টরি কেবল কমান্ড লাইন সরান


1

কীভাবে ফোল্ডার এবং সেখানে সামগ্রী সরিয়ে ফেলা এবং বর্তমান ডিরেক্টরিতে ফাইল রাখবেন?

আগে

parent
├── folder1
├── folder2
│   ├── file1
│   ├── file2
├── folder3
├── file3
├── file4
└── file5

পরে:

parent
├── file3
├── file4
└── file5

1
আপনি কী ওএস ব্যবহার করেন?
জেক

আমি একটি লিনাক্স মেশিনে আছি
গিলাস বেলহাদজে

উত্তর:


3

এর মতো কিছুতে কৌশলটি করা উচিত

cd parent
find . ! -path . -maxdepth 1 -type d -exec rm -rf {} \;

এটি বর্তমান কার্যক্ষম ডিয়ারের জন্য ডিরেক্টরিগুলি অনুসন্ধান করবে এবং কেবল 1 স্তর নীচে পুনরাবৃত্তি করবে এবং ডায়ারগুলি অপসারণ করবে। এটি করার আগে আরএম এর পরিবর্তে এলএসের সাহায্যে টেস্টারন সেরা করুন যাতে আপনি কী সরিয়ে ফেলা হবে তা পরীক্ষা করতে পারেন

cd parent
find . ! -path . -maxdepth 1 -type d -exec ls {} \;

উদাহরণ

jake@jake-HP /tmp/test $ tree
.
├── 1
├── 2
├── bar
│   ├── 1
│   ├── 2
│   └── 3
├── blah
│   ├── 1
│   ├── 2
│   └── 3
└── foo
    ├── 5
    └── 9

3 directories, 10 files
jake@jake-HP /tmp/test $ find . ! -path . -maxdepth 1 -type d -exec ls {} \;
1  2  bar  blah  foo
1  2  3
5  9
1  2  3
jake@jake-HP /tmp/test $ find . ! -path . -maxdepth 1 -type d -exec rm -rf {} \;
jake@jake-HP /tmp/test $ tree
.
├── 1
└── 2

0 directories, 2 files

আমি সন্ধানটি সবেমাত্র পেয়েছি। ! -পথ। -প্রকার ডি | xargs rm -R @ জেক ! -path .আপনি .ফোল্ডারটি বাদ দিতে যা খুঁজছেন
গিলাস বেলহাদজে

ধন্যবাদ গিলাস-বেলহাদজ! এটি অন্তর্ভুক্ত করার জন্য উত্তর সম্পাদনা করেছেন।
জেক

আরও ভাল পরীক্ষা করতে -exec ls -dF {} \; বা -exec ls --color -dF {} \;কেবল ডিরেক্টরিগুলির মধ্যে কী তালিকা রয়েছে তা এড়াতে।
হাস্তুর

সতর্কতা, find | xargs rmস্থান স্পেসিসহ ডিরেক্টরিগুলির (বা আরও খারাপ) বিশেষ অক্ষরগুলির উপস্থিতিতে অবাঞ্ছিত ফলাফল দেবে।
Law29

0

ফাইন্ড ব্যবহার করা ভাল কারণ আপনি ঠিক কী করতে চান তা নির্দিষ্ট করে। তবে জ্যাকের উত্তরের xargs এর ফাঁকে থাকা ডিরেক্টরিগুলির নামের সাথে সমস্যা রয়েছে has আপনাকে জার্গাগুলি অনুসন্ধান করতে প্রিন্ট 0 এবং -0 যোগ করতে হবে।

আমি লিখতাম

find parent -type d -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;

এটি আরও সহজ:

rm -rf parent/*/

এটি লুকানো ডিরেক্টরিগুলি (একটি সময়ের সাথে শুরু) সরিয়ে ফেলবে না যদিও আপনাকে এগুলি যুক্ত করতে হবে:

rm -rf parent/*/ parent/.[^.]*/

যদিও আপনার অন্যদিকে নির্দেশক চিহ্ন রয়েছে কিনা দেখুন।

আপনি যদি কেবল * ডিরেক্টরিতে মেলে * / তে বিশ্বাস না করেন তবে একটি কম পরিষ্কার সমাধান যা প্রচুর ত্রুটি তৈরি করে (এবং এটি গোপন ডিরেক্টরিগুলি বিবেচনায় নেয় না কারণ এটি জটিল হয়ে যায়) হ'ল

rm -rf parent/*/* 
rmdir parent/*
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.