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/
และอื่น ๆ ประกอบด้วยไฟล์บันทึก
ฉันต้องการเพียงสอง logfiles ล่าสุดที่จะแสดงตามคำสั่งซึ่งผมมักจะพบการใช้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*
มิฉะนั้นเชลล์จะขยาย