คำสั่ง find ให้เอาต์พุตนี้:
[root@localhost /]# find var/log/ -iname anaconda.* var/log/anaconda.log var/log/anaconda.xlog var/log/anaconda.yum.log var/log/anaconda.syslog var/log/anaconda.program.log var/log/anaconda.storage.log
หลังจากรวมกับ tar มันแสดงผลลัพธ์นี้:
[root@localhost /]# find var/log/ -iname anaconda.* -exec tar -cvf file.tar {} \; var/log/anaconda.log var/log/anaconda.xlog var/log/anaconda.yum.log var/log/anaconda.syslog var/log/anaconda.program.log var/log/anaconda.storage.log
แต่ในขณะที่รายชื่อไฟล์ tar ก็แสดงเพียงไฟล์เดียว
[root@localhost /]# tar -tvf file.tar -rw------- root/root 208454 2012-02-27 12:01 var/log/anaconda.storage.log
ฉันทำอะไรผิดที่นี่
ด้วย xargs ฉันได้รับผลลัพธ์นี้:
[root @ localhost /] # find var / log / -iname anaconda. * | xargs tar -cvf file1.tar
คำถามที่สอง
ในขณะที่พิมพ์ / หน้า var หมายความว่า find /var/log
ทำไมมันถึงส่งข้อความนี้ tar: การนำชื่อ `/ 'นำออกจากชื่อสมาชิก
[root@localhost /]# find /var/log/ -iname anaconda.* -exec tar -cvf file.tar {} \; tar: Removing leading `/' from member names /var/log/anaconda.log tar: Removing leading `/' from member names /var/log/anaconda.xlog tar: Removing leading `/' from member names /var/log/anaconda.yum.log tar: Removing leading `/' from member names /var/log/anaconda.syslog tar: Removing leading `/' from member names /var/log/anaconda.program.log tar: Removing leading `/' from member names /var/log/anaconda.storage.log
ในรูปแบบที่เรียบง่ายความแตกต่างระหว่างสองต่อไปนี้คืออะไร?
find var/log
และ find /var/log
{} +
แทน {} \;
มันจะจัดกลุ่มผลลัพธ์ของการค้นหาเป็นหนึ่งอาร์กิวเมนต์
find
คำสั่งคุณควรอ้างอิงข้อความค้นหา มันทำงานได้โดยไม่ต้องบางครั้ง แต่ไม่เสมอไป