লিনাক্স কমান্ড: ফাইলগুলি সন্ধান করুন এবং তাদের উপর আদেশ কমান্ড দিন


16

ডিরেক্টরি এবং উপ-ডিরেক্টরিগুলিতে সমস্ত ফাইল সন্ধান করতে এবং সেগুলিতে একটি কমান্ড চালানোর জন্য কীভাবে পরিচালনা করব?

উদাহরণ স্বরূপ,

find . -type f -name "*.txt" 

সমস্ত txt ফাইল এবং সন্ধান করে:

find . -type f -name "*.txt" | gedit

এটি gedit এ প্রেরণ করে তবে একটি পাঠ্য ফাইলের মধ্যে। আমি জিডিটটি সমস্ত পাঠ্য ফাইল খুলতে চাই।

উত্তর:


22

আপনি -execপ্রতিটি মিলে যাওয়া ফাইলটিতে একটি আদেশ চালানোর জন্য পতাকা ব্যবহার করতে পারেন :

$ find ./ -type f -name "*.txt" -exec gedit "{}" \;

বাক্য গঠন

বাক্যবিন্যাসটি কিছুটা অদ্ভুত (আরও -exec command ;ম্যান্যাপে দেখুন):

The string `{}' is replaced by the current file name being processed

আপনি এটিও বিবেচনা করতে চাইতে পারেন -execdirযা একই কাজ করবে, তবে ম্যাচযুক্ত ফাইল সহ সাব-ডিরেক্টরি থেকে কমান্ডটি কার্যকর করে (এটি সাধারণত পছন্দনীয়)।


1
ধন্যবাদ। আমি এটি কাজ করে দেখুন। তবে শেষটি ("{}" \ :) এর অর্থ কী? তালিকা কার্যকর কর?

1
{}বর্তমান ফাইলটি নামের জন্য বাধা হয়ে দাঁড়ায়, এবং সেমিকোলন শুধু কমান্ড সসীম হয়। ব্যাকস্ল্যাশ এবং আশেপাশের উদ্ধৃতিগুলি কেবল শেল প্রসার রোধ করার জন্য।
ডেভিড কেইন

5

find . -type f -name "*.txt" -print0 | xargs -0 gedit


ধন্যবাদ। আমি এটি কাজ করে দেখুন। তবে কী-প্রিন্ট 0 | xargs -0 অংশ মানে?

1
@xyz, আপনি ম্যান পেজগুলি ব্যবহার করে যে কোনও ইউএনআইএক্স কমান্ডের পতাকাগুলি সম্পর্কে পড়তে পারেন। চেষ্টা করুন man findবা man xargs, তারপরে /প্রদত্ত পতাকাটির সন্ধান করতে। ডকুমেন্টেশনটি বেশ ভাল, এটি আপনার প্রশ্নের উত্তর দেওয়া উচিত।
ডেভিড কেইন 21

1
-print0প্রতিটি এন্ট্রির পরে একটি নুল অক্ষর মুদ্রণ করে, -0এনট্রিগুলি NULL অক্ষর দ্বারা পৃথক হওয়ার প্রত্যাশা করে। ছদ্মবেশী নামগুলি হ্যান্ডেল করার এটি সবচেয়ে নিরাপদ উপায়।
নোটলিস্ট

এবং এটি খানিকটা আশ্চর্যের নয় যে সিনট্যাক্সটি xargs -0 gedit এর পরিবর্তে xargs -0 জিডিট নয়। আমি দেখতে পাচ্ছি যে প্রাক্তনটি কাজ করে না, তবে কেন তা ব্যর্থ হয়।

3
এক্সার্গস পারফরম্যান্সের কারণে-এক্সেকের চেয়ে ভাল, যেহেতু জার্গেটগুলি জিডિટে পাস করার আগে বেশ কয়েকটি যুক্তি "ব্যাচ আপ" করতে পারে। যদি প্রতিটি ফাইলের জন্য পৃথকভাবে জিডিট চালানোর প্রয়োজন হয় তবে '... -প্রিন্ট 0 | প্রতিস্থাপন করুন xargs -0 gedit 'সহ' ... -প্রিন্ট 0 | xargs -0 -i gedit} 'xargs ফাইন্ড এবং স্ক্রিনের মতো এই কমান্ডগুলির মধ্যে একটি যা আপনি কখনই জানেন না যে আপনি এটি সম্পর্কে জানার পরে এক বছর ছাড়া কীভাবে এসেছিলেন।
আর্কলাইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.