ค้นหาไฟล์จากนั้นแทนที่ด้วย wildcard


0

ฉันมีชุดไฟล์ที่เรียกว่า:

2014111test.log
2014111test.log.stuff
2014111test.log.flibble
2014115test.log
2014115test.log.stuff
2014115test.log.flibble

ฉันต้องการค้นหาไฟล์บันทึกทั้งหมดในช่วงอายุที่กำหนดจากนั้น tar.gz พร้อมกับไฟล์อื่น ๆ ที่มีส่วนเริ่มต้นเดียวกันของชื่อลงในไฟล์เก็บถาวร

$ find . -name '20*.log' -ctime +90 -exec 'tar zvcf /var/log/logzip/{}.tgz {}*' \;
find: tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*: No such file or directory
...

อย่างไรก็ตามถ้าฉันพิมพ์

tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*

ด้วยตัวเองมันทำงานได้ดี ดังนั้นดูเหมือนว่ามีบางสิ่งผิดปกติเกิดขึ้นกับวงกลมที่พบว่าส่งคำสั่งไปยังเปลือกหอย

ฉันพลาดอะไรไป

คำตอบ:


0

ทำไมคุณมีคำพูดรอบคำสั่ง tar ของคุณ? ฆ่าคำพูด คุณกำลังพยายามเรียกใช้คำสั่ง:

tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*

ไม่มีข้อโต้แย้ง

จำไว้ว่าคำสั่ง UNIX สามารถมีช่องว่างในตัว

ฉันไม่สามารถทดสอบสิ่งนี้ได้ แต่:

find . -name '20*.log' -ctime +90 -exec tar zvcf /var/log/logzip/{}.tgz {}* \;

ควรทำงาน.


มันไม่ได้ คุณทดสอบหรือไม่
พอล

0

ลองลบเครื่องหมายคำพูดรอบคำสั่ง tar และลบ * หลังจาก {} ทำไมคุณถึงใช้ * หลัง {} ฉันตรวจสอบแล้วว่ามันใช้งานได้ดี


โปรดอ่านคำถามอีกครั้ง - ฉันกำลังรอหลายไฟล์ตามชื่อไฟล์ที่พบ
พอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.