คำสั่ง 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คำสั่งคุณควรอ้างอิงข้อความค้นหา มันทำงานได้โดยไม่ต้องบางครั้ง แต่ไม่เสมอไป