সমস্ত ফাইল সাবফোল্ডার থেকে প্যারেন্ট ফোল্ডারে সরানোর জন্য শেল স্ক্রিপ্ট


47

আমি ফোল্ডারে গুচ্ছ ফোল্ডার A। আমি এই সমস্ত ফোল্ডার থেকে ফাইলগুলিতে সরাতে চাই A

অথবা

আমি চাইল্ড ফোল্ডারগুলি থেকে সমস্ত ফাইল কেটে প্যারেন্ট ফোল্ডারে আটকে দিতে চাই।

কিভাবে যে কি?


1
আমি সত্যিই এই অব্যর্থ বা কিছু হওয়ার পরীক্ষা আছে না, কিন্তু আপনি কেবল একটি টার্মিনালে ফোল্ডার A থেকে এই আদেশটি ঢোকানোর চেষ্টা করেছি: mv */* .?
মারটি ফ্রাইড

আপনি কি নিশ্চিত যে কোনও নকল ফাইলের নাম নেই?
জিপ্পি

mv */* .সাবফোল্ডারগুলির সাবফোল্ডার থেকে ফাইলগুলি সরানো হবে না।
রাহুল বিরপাড়া

@ জিপ্পি হ্যাঁ, কোনও সদৃশ নাম নেই
রাহুল বিরপাড়া

উত্তর:


81

আপনার Aডিরেক্টরিতে যান এবং চালান

find . -mindepth 2 -type f -print -exec mv {} . \;

যার অর্থ "এই ডিরেক্টরিতে এবং এর উপ ডিরেক্টরিগুলির সমস্ত ফাইল সন্ধান করুন এবং লক্ষ্য ডিরেক্টরিতে এমভি চালান each প্রতিটি ফাইল তাদের বর্তমান ডিরেক্টরিতে স্থানান্তরিত করার জন্য খুঁজে পেয়েছিল।


1
এটি ইতিমধ্যে প্যারেন্ট ডিরেক্টরিতে থাকা ফাইলগুলি সরানোর চেষ্টা করে।
রাহুল বিরপাড়া

ভার্পাপাড়া: এখন আপনার সংস্করণটি ডট ডিরেক্টরিগুলির সমস্ত ফাইল ভুলে যায়। সতর্কতা দমন করার পরিবর্তে এটি -Mindepth 2 দিয়ে সংশোধন করুন।
টুমিনয়েড

1
জিএনইউর সাহায্যে findআপনি কিছুটা মার্জিত হতে পারেন এবং mvপ্রতিটি ফাইলের জন্য কোনও প্রক্রিয়া তৈরি করতে পারেন না :find A -mindepth 2 -type f -exec mv -t A \{\} +
ডেভিড ফোরস্টার

ডেভিড, আপনি সর্বাধিক কমান্ড লাইন দৈর্ঘ্যের সীমা না আঘাত করা পর্যন্ত আপনার সংস্করণটি কাজ করে, যা পাথগুলি কীভাবে প্রিন্ট করে তা নির্দিষ্ট করে দেওয়া বিশেষত নয় যেখানে আপনি উদাহরণস্বরূপ এ ছাড়া অন্য ডিরেক্টরি থেকে ডিরেক্টরিটি আহ্বান করেন সে ক্ষেত্রে।
টুমিনয়েড

9
এটি অত্যন্ত বিপজ্জনক। আপনার যদি বিভিন্ন সাবফোল্ডারগুলিতে একই ফাইলের নামের ফাইল থাকে তবে আপনি সর্বশেষ অনুসন্ধানের সাথে এগুলি সমস্ত ওভাররাইট করে ফেলবেন। find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
ব্যাকআপ

4

ঠিক আছে আপনি একটি ফাইল তৈরি করতে পারেন এবং এটির নাম "কাটমি" রাখতে পারেন (টার্মিনাল টাইপে কাটমি নামে একটি ফাইল তৈরি nano cutmeকরতে এটি সংরক্ষণ করতে CTRL + X টিপুন এবং তারপরে ENTER টিপুন)

  1. আপনি এটি পুনরাবৃত্তভাবে করতে চান (সেই সাবফোল্ডারগুলির সাবফোল্ডার এবং সাবফোল্ডারগুলিতে)
  2. আপনি স্ক্রিপ্ট ফাইলটি সরানো এড়িয়ে যেতে চান
  3. আপনার কাছে সেই ফোল্ডারে ফাইলগুলি সরানোর অনুমতি রয়েছে
  4. ফাইলগুলি তাদের নামে ফাঁকা স্থান অন্তর্ভুক্ত করতে পারে বা নাও পারে

find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;

লাইনের ভিতরে কাটমে নামটি নোট করুন । আপনি যে স্ক্রিপ্টটি চালাবেন এটি একই রকম হওয়া উচিত।

ফাইলটি তৈরি করার পরে এবং উপরের লাইনটি আটকে দেওয়ার পরে, স্ক্রিপ্টের মতো একই ফোল্ডারে নিম্নলিখিতটি চালান:

chmod +x cutme। এটি আপনার নতুন ফাইল "সম্পাদনযোগ্য" ফ্ল্যাগ যাতে আপনি এটা ভালো নির্বাহ করতে পারেন দিতে হবে: ./cutme


ইতিমধ্যে প্যারাড ডিরেক্টরিতে থাকা ফাইলগুলি কেন সরানোর চেষ্টা করব?
রাহুল বিরপাড়া

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