tìm một tập tin trong kho lưu trữ tar.gz


12

Có thể sử dụng findlệnh để nó tìm kiếm các tệp trong kho lưu trữ tar.gz bằng ký tự đại diện không?

giống

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

Câu trả lời:


17

Còn về

$ tar tf archive.tar.gz | grep foo

không chỉ liệt kê tất cả các tập tin?
kẹp

@clamp Có, nếu bạn muốn làm một cái gì đó cho mỗi tệp, chỉ cần chuyển ống dẫn ra một lệnh khác.

cảm ơn! xin lỗi nhưng tôi là người mới trong unix. tôi đã thử: tar tf graphics.tar.gz | find . --name *space*nhưng nó nóiunkown predicate --name
kẹp

Đối findsố @clamp chỉ mất một dấu gạch ngang, nhưng vì đó là danh sách các tệp trên stdin, nên bạn muốn sử dụng grepthay vào đó, như mã ví dụ của do dự. Hãy thửtar tf graphics.tar.gz | grep 'space'
Kevin

1
grep *foo*không phải là một biểu thức chính quy hợp lệ. gregkhông hiểu được sự ảm đạm, nó hiểu các biểu thức thông thường. Hãy thử grep foothay thế.
Alexios

3

Gắn kết kho lưu trữ như một thư mục. Bạn có thể làm điều đó với hệ thống tập tin AVFS , cho phép bạn truy cập bất kỳ kho lưu trữ nào dưới dạng thư mục có tên có dấu #.

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

không hoạt động cho gzip
van abel

@vanabel Một tệp gzip không chứa các tệp khác. Nó chỉ là một tập tin, được nén. Vì vậy, không có người nào ở bên trong để tìm kiếm.
Gilles 'SO- ngừng trở nên xấu xa'

1

Tôi nghĩ rằng nó hoạt động không có đường ống và grep.

như thế này: tar tvf archive.tar.gz "foo"

theo cách này, quả cầu cũng sẽ hoạt động.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.