ค้นหาไฟล์ภายในไฟล์เก็บถาวร tar.gz


12

เป็นไปได้ไหมที่จะใช้findคำสั่งเพื่อค้นหาไฟล์ภายในไฟล์เก็บถาวร tar.gz ด้วยการใช้สัญลักษณ์แทน?

ชอบ

find archive.tar.gz --name *foo*

คำตอบ:


17

เพียงแค่:

$ tar tf archive.tar.gz | grep foo

ไม่ได้เป็นเพียงแค่รายการไฟล์ทั้งหมดหรือไม่
หนีบ

@clamp ใช่ถ้าคุณต้องการทำบางสิ่งบางอย่างกับไฟล์แต่ละไฟล์เพียงแค่ไพพ์เอาท์พุทนั้นไปยังคำสั่งอื่น

ขอบคุณ! ขอโทษ แต่ฉันเป็นมือใหม่ในยูนิกซ์ ฉันพยายาม: tar tf graphics.tar.gz | find . --name *space*แต่มันพูดว่าunkown predicate --name
หนีบ

findข้อโต้แย้ง@clamp ใช้เวลาเพียงหนึ่งขีด แต่เนื่องจากเป็นรายการไฟล์ใน stdin คุณต้องการใช้grepแทนเช่นรหัสตัวอย่างของ hesse ลองtar tf graphics.tar.gz | grep 'space'
Kevin

1
grep *foo*ไม่ใช่นิพจน์ทั่วไปที่ถูกต้อง gregไม่เข้าใจ globs มันเข้าใจการแสดงออกปกติ ลองgrep fooแทน
Alexios

3

ใส่ไฟล์เก็บถาวรเป็นไดเรกทอรี คุณสามารถทำมันด้วยAVFSระบบแฟ้มซึ่งจะช่วยให้คุณสามารถเข้าถึงข้อมูลที่เก็บใด ๆ #ที่เป็นไดเรกทอรีที่มีชื่อมีต่อท้าย

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

ไม่ทำงานกับ gzip
van abel

@vanabel ไฟล์ gzip ไม่มีไฟล์อื่น มันเป็นเพียงไฟล์เดียวที่ถูกบีบอัด ดังนั้นไม่มี "ข้างใน" ในการค้นหา
Gilles 'หยุดความชั่วร้าย'

2

ฉันคิดว่ามันใช้งานได้โดยไม่มีท่อและ grep

แบบนี้: tar tvf archive.tar.gz "foo"

ด้วยวิธีนี้ globs จะทำงานเช่นกัน

tar tvf archive.tar.gz "*.foo"

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