HP-UX ***** B.11.23 U 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*
अन्यथा शेल इसे विस्तारित करेगा।