এইচপি-ইউএক্স ***** বি.11.23 ইউ ia64 **** সীমাহীন-ব্যবহারকারী লাইসেন্স
find . -type d -name *log* | xargs ls -la
সেই ডিরেক্টরিতে থাকা log
সমস্ত ফাইল আমাকে ডিরেক্টরিগুলির নাম (ডিরেক্টরিতে অন্তর্ভুক্ত থাকে ) দেয়।
ডিরেক্টরি /var/opt/SID/application_a/log/
, /var/opt/SID/application_b/log/
, /var/opt/SID/application_c/log/
ইত্যাদি লগ ফাইল ধারণ করে।
আমি চাই যে দুটি সর্বশেষ দুটি লগফিল ls
কমান্ড দ্বারা তালিকাবদ্ধ করা হোক , যা আমি সাধারণত ব্যবহার করি ls -latr | tail -2
।
আউটপুট এর কিছু হতে হবে ..
/var/opt/SID/application_a/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_b/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_c/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
find . -type d -name *log* | xargs ls -la | tail -2
আমাকে উপরের ফলাফলটি দেয় না। আমি যা পাই তা হ'ল find . -type d -name *log* | xargs ls -la
কমান্ডের শেষ দুটি ফাইলের তালিকা
।
সুতরাং আমি পাইপ পরে কমান্ড পাইপ করতে পারেন xargs
? উপরের ফরম্যাটে ফাইলগুলির ফলাফলের তালিকা পেতে আমি কীভাবে আরও জিজ্ঞাসা করব?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
আমাকে বর্তমান ডিরেক্টরিতে দশটি ডিরেক্টরি নামের একটি তালিকা দেয় যা /var/opt/SID
হ'ল এবং তা আমিও চাই না।
sh -c
কমান্ডের নামটি (প্যারামিটার 0) এটির দ্বিতীয় যুক্তি হিসাবে প্রত্যাশা করে, তাই আপনার সর্বদা করা উচিত find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10" lstail
( lstail
শেষের দিকে লক্ষ্য করুন , যা $0
তৈরি শেল হিসাবে কাজ করবে )। অন্যথায় আপনার ফলাফলের প্রথমটি সেই ভূমিকাটি পূরণ করবে এবং অব্যবহৃত হবে।
*log*
অন্যথায় শেলটি এটি প্রসারিত করবে উল্লেখ করা উচিত।