'আরএম ফাইলগুলি *' সমস্ত উপ-ডিরেক্টরি থেকে সমস্ত ম্যাচ সরিয়ে দেয়?


13

আমি wordpress-891.sqlবর্তমান ডিরেক্টরি থেকে দেখতে যে কোনও ফাইল সরিয়ে দিতে চাই (উপ-ডিরেক্টরিগুলির মধ্যে নয়)।

হবে rm wordpress-*.sqlকৌতুক করতে বা এটি একটি উপ-ডিরেক্টরির থেকে মিলগুলি সরিয়ে দেবে?


1
অন্যদিকে, অন্য সমস্ত উত্তর সঠিকভাবে শেষ হওয়ার সাথে সাথে আরও একটি মোচড় রয়েছে: এটি আসলে বাশ, আরএম কমান্ড নয়, যা ওয়াইল্ডকার্ডকে প্রসারিত করে। আপনার ডিরেক্টরিতে যদি দশটি মিলে যাওয়া ফাইল থাকে, rm ওয়াইল্ডকার্ডটি দেখতে পাবে না, বরং দশটি পৃথক যুক্তি। আপনি যদি আরএমটি সম্প্রসারণ করতে চান তবে আপনার যুক্তিটি একক উদ্ধৃতিতে আবদ্ধ করতে হবে। আরএম এর জন্য, এটি কোনও পার্থক্য করে না, তবে কিছু অন্যান্য প্রসঙ্গে এটি হতে পারে। সাধারণত, যখন ওয়াইল্ডকার্ড ফাইলগুলি বাদ দিয়ে অন্য কোনও কিছুকে বোঝায়, যেমন অ্যাপ্লিকেশন প্যাকেজ।
কেভিন কেইন

3
@ কেভিনকেন, rmফাইলের নাম সম্প্রসারণ করবেন না ... rm "foo*"নামে আক্ষরিক নক্ষত্রযুক্ত একটি ফাইল সরানোর চেষ্টা করবে।
ইল্কাচ্চু

উত্তর:


20

না। সাধারণ গ্লোব্বিং *পুনরাবৃত্ত হয় না এবং হয় না rm

যদি ডিরেক্টরিটির নামের সাথে মেলে, এটি সরানো হবে না - -rডিরেক্টরি মুছতে আপনার পতাকা প্রয়োজন flag

সুতরাং আপনি যদি নিশ্চিত হন যে এই ফাইলগুলি মুছতে চান তবে এটি করা নিরাপদ।

আপনি rmইন্টারেক্টিভ করতে পারেন

rm -i wordpress-*.sql

তাহলে এটি প্রতিটি ফাইল মোছার আগে নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে


14

হ্যাঁ এটি আপনার জন্য কৌশলটি করে এবং বর্তমান ডিরেক্টরিতে স্কিমার সমস্ত ফাইল সরিয়ে দেয়। এবং না, এটি উপ-ডিরেক্টরিগুলির মধ্যে ফাইলগুলি সরিয়ে দেয় না।

আপনি কখনই নিশ্চিত হন না যে আপনি যখন কোনও কমান্ড চালাবেন তখন কী হয়:

rm wordpress-*.sql

তারপরে এটি ব্যবহার করে চালান ls:

ls wordpress-*.sql

আউটপুটে আপনি যে ফাইলগুলি দেখছেন সেগুলি হ'ল এটি সরানো হবে।

আপনি যখন একটি তালিকা পাওয়ার চেষ্টা করছেন :, নামের ডিরেক্টরিতে ডিরেক্টরি ফাইল যুক্ত তালিকা রোধ foo*করতে -dসুইচ ব্যবহার করা ভাল etc.lsfoobar/

ls -d foo*

এই কৌশলটি কমান্ডগুলির জন্য কাজ করে যা পুনরাবৃত্তভাবে কাজ করতে ব্যবহৃত হয় না।

আপনি যা করতে পারেন তা হ'ল আপনার পছন্দসই ইনপুট টাইপ করা, উদাহরণস্বরূপ: wordpress-*তারপর Ctrl+ Alt+ টিপুন *এবং এখন সমস্ত মিল আপনার কমান্ডের সামনে স্বয়ংক্রিয়ভাবে টাইপ করা হবে।


4
আমার প্রিয় পদ্ধতি:printf "%s\n" wordpress-*.sql
wjandrea

1
আপনিও ইকের মতো ভান করতে পারেন echo rm file*। বিশেষত বিরূপ ফাইলের নামগুলি সন্ধান করুন-rf

@ সেকস: আপনি এগুলিকে আরও rm ./*বা নিরাপদে কভার করতে পারেন rm -- *
ডেভিড ফোস্টার

হ্যাঁ, বা xargs -0@ ডেভিডফোরস্টার ব্যবহার করুন

আপনি যদি যান ls foo*এবং আপনার কাছে ডিরেক্টরি বলে একটি ডিরেক্টরি রয়েছে foobar, আপনি সেই ডিরেক্টরিটির বিষয়বস্তুর একটি তালিকাও পেয়েছেন, সুতরাং lsrm
কীটি

12

না, rmউপ-ডিরেক্টরিগুলির মাধ্যমে পুনরাবৃত্তি করে না।

সমস্ত উপ-ডিরেক্টরিতে ফাইলের ফাইলগুলি মুছুন দেখুন - উপ-ডিরেক্টরিতে ফাইলগুলি মুছে ফেলার পদ্ধতির জন্য সুপার ব্যবহারকারী।

যদি আপনি দুর্ঘটনাক্রমে gvfs-trashকোনও গুরুত্বপূর্ণ কিছু মুছে ফেলার বিষয়ে উদ্বিগ্ন হন তবে rm(যা স্থায়ীভাবে ফাইলগুলি মুছবে ) এর পরিবর্তে (যা ফাইলগুলিকে ট্র্যাসে পাঠায়) ব্যবহার করুন ।


gvfs-trashউল্লেখ করার জন্য ধন্যবাদ আজ কিছু শিখেছে খুব
কষ্টের সাথে

-1

আপনি যদি সমস্ত মিলে যাওয়া ফাইলগুলি সন্ধান এবং মুছতে চান তবে wordpress-*.sqlআপনি findকমান্ডটি ব্যবহার করতে পারেন । :)

উদাহরণস্বরূপ, আপনি সঙ্গে সব ম্যাচিং ফাইল মুছে ফেলুন চাই wordpress-*.sqlঅধীনে test_dir, নিচের মত না।

cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;

যখনই findপ্রোগ্রামটি সত্যিই একটি মিলে যাওয়া ফাইল খুঁজে পায়, এটি -execবিকল্পের পরে একটি কমান্ড কার্যকর করার চেষ্টা করে । এই ক্ষেত্রে rm -f {}কার্যকর করা {}হবে এবং ম্যাচের ফাইলের নামটিতে পরিবর্তন করা হবে। যেমন

rm -f wordpress-169.sql

আপনি -maxdepthবিকল্প সহ সাব-ডিরেক্টরিগুলির গভীরতাও সেট করতে পারেন ।

cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;

দয়া করে নোট করুন যে -maxdepthঅন্যান্য বিকল্পগুলির আগে আপনাকে অবশ্যই বিকল্পটি নির্দিষ্ট করতে হবে । অন্যথায় আপনি ফলাফলটি দেখতে চান যা আপনি সত্যিই দেখতে চান না।


1
ওপি বিপরীতে চায়: উপ-ডিরেক্টরিতে পুনরাবৃত্তি না করা।
মেলিবিয়াস

2
জিএনইউ সন্ধান করুন: "বিকল্পগুলির আগে সমস্ত পরীক্ষাগুলিকে প্রভাবিত করে, বিকল্পগুলির আগে নির্দিষ্ট করা পরীক্ষাগুলি", নীচের বিকল্পগুলির তালিকার অন্তর্ভুক্ত -maxdepth। এর -exec rm -f {} +চেয়ে বেশি -exec \;, বা আরও ভাল, কেবল ব্যবহার করুন-delete
ইলকচু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.