আমি কীভাবে পাইস ইনপুটকে এলএস কমান্ডে নির্দেশ করতে পারি?


20

আমি যখন কিছু টাইপ করি তখন:

find . -name *foo* | ls -lah

এটি প্লেইন lsকমান্ড হিসাবে একই ফলাফলটি ফেরত দেয় , যদিও এর কোনও ইনপুট নেই।

যাহোক:

ls -lah $( find . -name *foo* )

ভাল কাজ করে তবে findকমান্ডের ফলাফল কেবল তখনই হয় ।

পাইপ দেওয়া কি সম্ভব ls?


আপনি প্রতিটি অনুসন্ধান ফলাফলের মধ্যে ফাইলগুলি এলএস করতে চান কিনা তা নির্দিষ্ট করতে হবে, বা আপনি সরাসরি ফলাফলের ফলাফলগুলি ls করতে চান। যদি এটি পরবর্তী হয় তবে আপনার / ডেনিসের উত্তরটি সঠিক উত্তর।
rmutalik

উত্তর:


27

আপনি কমান্ড -execদিয়ে ব্যবহার করতে পারেন find

find . -name '*foo*' -exec ls -lah {} \;

আপনার সমাধানের জন্য আপনাকে ধন্যবাদ। কোনও পাইপ নেই তবে এটি একটি মার্জিত পদ্ধতি। যদি 'অনুসন্ধান' এর সাথে কোনও ফলাফল না পাওয়া যায় তবে এটি কিছুই প্রদর্শন করে না (আসলে কী ভাল)।
লাসাল

7
কিছুটা ভাল উপায়:find . -name '*foo*' -exec ls -lah {} +
jlliagre

20
find . -name *foo* | xargs -r ls -lah

এটা কাজ করা উচিত।


1
সমাধানের জন্য আপনাকে ধন্যবাদ। তবে আমি কীভাবে সাদা জায়গাগুলি মোকাবেলা করতে পারি?
লাসল

2
@ পছন্দের উপায়টি অনুসন্ধানের -exec +(বা -exec \;) ব্যবহার করা । xargsকেবলমাত্র -0বিকল্পটি ব্যবহার করা নিরাপদ , যার অর্থ আপনি xargsনাল-বাইটস (\ 0) দিয়ে আইটেমগুলি সীমিত করতে যে কোনও আদেশটি পাইপ করতে হবে তা আপনাকে জানাতে হবে । findআপনি এটি সঙ্গে করতে পারেন -print0। xargs এর -0 এবং সন্ধানের -প্রিন্ট 0 মানক নয়, তবে -exec, সুতরাং যদি বহনযোগ্যতা যদি কোনও সমস্যা হয় তবে -exec সহ সন্ধান করুন।
গিরাহ


3

এটি ব্যবহার করুন: (ls ফাঁকা স্থান বা অস্বাভাবিক অক্ষরের সাথে ফাইলের নামগুলি বাছাই করতে পারে, কাজ করতে পারে)

find . -name *foo* -print0 | xargs -0 ls -lah

"-প্রিন্ট0" এর অর্থ ফাইলের নামগুলি নাল অনুসারে file foo 1আউটপুট পাবে find। Xargs- এর "-0" আর্গুমেন্ট এটিকে এই ধরণের ইনপুটটি আশা করতে বলে, সুতরাং স্পেস সহ ফাইলের নামগুলি lsসঠিকভাবে কমান্ডটিতে পাইপ করা যায় ।

xargsনির্মাণ চেয়ে ভাল কিছু উপায় রয়েছে find etc -exec ls {} \;কারণ ফাইলের নামের সব পাঠানো lsএকবারে, তাই আপনি যদি টাইমস্ট্যাম্প (ব্যবহার করে তাদের সবাইকে সাজাতে চান ls) এই কাজ ভালো কিছু:

find . -iname *pdf -print0 | xargs -0 ls -ltr

নেটবিএসডি সিস্টেমে, "-প্রিন্টেক্স" হ'ল একটি বিকল্প (এটি আমার কাছে একটি কার্যকর যুক্তি বলে মনে হয় তবে যাই হোক না কেন, আমাদের এক্সার্গস রয়েছে -0 এবং এটি ঠিক আছে):

find . -name *foo* -printx | xargs ls -lah (উবুন্টুর পক্ষে নয়)


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