Mở tệp được tìm thấy bằng lệnh 'find'


12

Đây có lẽ là một điều dễ dàng, nhưng tôi không thể tìm ra nó và nó gần như không thể tìm kiếm được. Trong hệ thống phân cấp thư mục, tôi có chính xác một tệp loại xyz. Tôi muốn tìm tập tin đó và mở nó bằng lệnh terminal.

find . -name *.xyz

Điều này sẽ trả về các tập tin tôi đang tìm kiếm. Bây giờ làm thế nào để tôi mở nó tự động, mà không cần gõ tên?

find . -name *xyz | open

Điều này không hoạt động. Nó nói rằng nó không tìm thấy lệnh mở.


3
Đó là loại tập tin gì? Nếu nó không phải là tệp thực thi, bạn muốn mở tệp với chương trình nào? Ôi những gì Windows đã làm với dân số của chúng tôi = /
chown

Điều này có lẽ thuộc về superuser ...
retracile

1
Tôi đang dùng Mac không phải Windows ... và tôi muốn mở tệp bằng chương trình mặc định.

2
tìm thấy . -name * xyz | xargs mở và tìm. -name * .xyz -exec mở {} \; cả hai đều làm việc Cảm ơn.

Tôi rất vui vì bạn đã tìm thấy một giải pháp. Đừng quên đánh dấu giải pháp hiệu quả nhất cho bạn. Những người khác sẽ thấy tỷ lệ 'chấp nhận của bạn và điều này sẽ đi một chặng đường dài khi đặt câu hỏi trong tương lai. Người dùng có tỷ lệ chấp nhận thấp hơn thường thấy câu hỏi của họ bị bỏ qua. =)
trận đấu

Câu trả lời:


10

@retracile là đúng. Bạn cần mở nó với "cái gì đó". Tuy nhiên, tôi thích sử dụng exec hơn xargs.

find . -name '*.xyz' -exec cat {} \;

điều này sẽ trở lại cat fileFound.xyz; cat fileFound2.xyx;vv .. tuy nhiên, bạn chỉ mong tìm thấy một tập tin.

lưu ý rằng việc thay đổi \;để +có thể quay trở lại cat fileFound.xyz fileFound2.xyztùy thuộc vào trường hợp sau này có lẽ là sự lựa chọn ưa thích.

để biết thêm về điều này tôi sẽ hướng bạn đến câu hỏi này


6

Lệnh bạn đang tìm kiếm được gọi xdg-open

Hãy thử lệnh của bạn với nó:

xdg-open "$(find . -name '*xyz' | head -n1)"

6

Bạn cần biết chương trình nào bạn muốn sử dụng để mở tệp. Nếu đó là một hình ảnh, bạn có thể sử dụng gwenview hoặc một cái gì đó.

Lấy đầu vào và biến nó thành đối số được thực hiện với xargs. Và bạn sẽ muốn thoát khỏi ký tự đại diện đó ...

find . -name \*xyz | xargs gwenview

Và để xử lý khoảng trắng trong tên tệp ....

find . -name \*xyz | xargs -d"\n" gwenview

2

Như những người khác đã chỉ ra, câu hỏi của bạn không đủ cụ thể để trả lời rõ ràng. Vì vậy, đoán theo một nghĩa khác có thể có: Nếu bạn muốn chạy nó dưới dạng thực thi, (có nghĩa là chương trình của bạn là tệp thực thi) nói với shell rằng bạn muốn thay thế đầu ra của lệnh find như một phần của dòng lệnh :

$(find . -name *.xyz)

0

Nếu bạn muốn mở tất cả các tệp được tìm thấy findtrong các tab riêng biệt trong một phiên bản của vim, bạn có thể thực hiện việc này:

find . -name \*xyz | xargs vim -p
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.