Làm thế nào để kết hợp đầu ra của nhiều lệnh `find`?


11
find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + > checklist.chk

Làm thế nào để kết hợp hai lệnh này?

  1. Bằng cách kết hợp cả hai cụm từ tìm kiếm trong một lệnh hoặc

  2. Vì vậy, mỗi lệnh thêm đầu ra của nó vào cùng một tệp.

Hy vọng nó rõ ràng những gì tôi đang cố gắng làm.

Câu trả lời:


25

Kết hợp:

find -type f \( -name "*.avi" -or -name '*.mp4' \) -exec md5sum {} + > checklist.chk 

Thêm đầu ra vào một tệp:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk

1
+1 cũng đề cập đến khả năng nối thêm vào tệp đầu ra.
Dubu

8

Có rất nhiều cách để làm điều này:

Sử dụng Hoặc -o:

find . -type f \( -name '*.avi' -o -name '*.mp4' \) -exec md5sum {} + > checklist.chk

Sử dụng Regex:

find . -type f  -regextype posix-extended -regex '.*\.(avi|mp4)$' -exec md5sum {} + > checklist.chk

Cả hai sẽ ghi đầu ra vào tập tin checklist.chk.


1
Cảm ơn .. Tôi biết về toán tử -o nhưng không biết cú pháp. Cũng không biết về regex có thể được sử dụng như thế này. Cảm ơn :)
akya

4

Với -ocờ (nằm dưới trang HOẠT ĐỘNG trong findtrang của người đàn ông)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
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.