Làm cách nào tôi có thể tìm thấy tất cả các tệp video trên hệ thống của mình?


11

Tôi đã thử sử dụng tìm kiếm *.*và lọc tệp Unity Lens File theo Last Modified = All, Type = Video và Size = All nhưng không tìm thấy gì mặc dù tôi biết có một số tệp .3gp trong thư mục Ảnh của tôi. Tôi biết rằng tôi cũng có nhiều tệp video trên một ổ đĩa khác được gắn trên hệ thống tệp. Tôi đã biên soạn một danh sách các tiện ích mở rộng có khả năng và tôi đã thử rất nhiều lần lặp lại findlệnh sử dụng chúng với find ./ -name "* .ext" -o (v.v., v.v., không có may mắn nào). Giải pháp là gì?


Tôi chưa thử, nhưng có một bài viết về OMG! Ubuntu về ứng dụng FSearch. Bạn có thể muốn kiểm tra nó. omgubfox.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad Cảm ơn bạn đã gợi ý nhưng khi tôi nhận được kết quả của mình thông qua CLI trong vòng 3 giây, tôi hài lòng với phương pháp này. Tôi sẽ xem xét nó mặc dù. :-)
Anh Cả Geek

Nhưng trừ khi bạn hiểu lệnh, bạn sẽ quên nó. Và nếu bạn đã hiểu các lệnh, thì bạn sẽ không đặt câu hỏi. Hãy cải thiện Ubuntu bằng cách làm cho mọi thứ dễ dàng hơn cho những người chỉ muốn hoàn thành công việc. Bạn có thể làm điều đó bằng cách thêm ứng dụng hoặc chỉ cho mọi người vào các ứng dụng đã có sẵn.
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad Tôi thường bắt đầu thiếu hiểu biết mà tôi có được thông qua nghiên cứu và phân tích. Tôi tin rằng phương pháp này là quan trọng để phát triển. Quá trình khám phá đã đưa tôi đến một giải pháp mà tôi đã chọn để chia sẻ ở đây khi tôi tạo một kịch bản và đặt nó vào ~ / bin Tôi không thể quên và biết nên tìm ở đâu nếu tôi làm. Vì đó là trong câu trả lời của tôi, bất cứ ai có động lực cũng có thể phân tích và hiểu nó.
Anh Cả Geek

Bạn đúng. Chúng tôi thực sự không cần máy tính để bàn. Chúng tôi có thể làm gần như mọi thứ bằng cách sử dụng các dòng lệnh. Nhưng nếu chúng ta muốn phát triển, chúng ta phải nhận ra rằng hầu hết mọi người không muốn học kiểu đó. Tôi biết các nhà phát triển thậm chí không thể mô tả sự khác biệt giữa stack và heap.
Jo-Erlend Schinstad

Câu trả lời:


14

Thay thế: tìm kiếm trên tập tin :

sudo find . -type f -exec file -N -i -- {} + | grep video

hoặc nếu bạn chỉ muốn tên tập tin ...

sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'

-N, --no-pad: Đừng đệm tên tập tin

-i, --mime: Làm cho lệnh tập tin xuất ra các chuỗi loại mime thay vì các chuỗi truyền thống dễ đọc hơn của con người. Do đó, nó có thể nói 'văn bản / đồng bằng; charset = us-ascii 'thay vì' văn ​​bản ASCII '. Để tùy chọn này hoạt động, tệp thay đổi cách xử lý các tệp được nhận biết bởi chính lệnh đó (chẳng hạn như nhiều loại tệp văn bản, thư mục, v.v.) và sử dụng tệp 'ma thuật' thay thế. (Xem phần PHIM, bên dưới).


Phần PHIM chỉ vào:

Các tập tin

/usr/share/misc/magic.mgc Danh sách tổng hợp mặc định của ma thuật.

/usr/share/misc/magic Thư mục chứa các tập tin ma thuật mặc định.


file là Slowwwwwwwwwwwwwwwww mặc dù (nó sẽ mở tất cả các tệp tìm thấy) nhưng có lợi thế bạn không cần thêm tất cả các phạm vi đó.


Sử dụng định vị:

locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi$ *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v

Mà "Phần PHIM, bên dưới"
Elder Geek

thêm! nó đã bị ẩn trong trang man: D
Rinzwind

Điều đó thật kỳ lạ, tôi đã mong muốn xác định vị trí sẽ nhanh hơn, nhưng với lệnh định vị của bạn, tôi có thời gian: thực 0m8.985 và với lệnh tìm kiếm của tôi, tôi có thời gian: thực 0m2.595s
Elder Geek

1
Oh ... xác định vị trí tất cả các tập tin. Tìm của bạn là từ nơi bạn đang có phải không?
Rinzwind

Tôi đã thêm công tắc -e không có nhiều tác động nhưng trả lại kết quả cho các tệp đã biến mất dường như không hữu ích. thời gian sys được cấp thấp hơn nhiều để xác định vị trí nhưng thời gian thực cho kết quả là tất cả những gì tôi thực sự quan tâm.
Anh Cả Geek

5

Tôi tưởng tượng điều này có thể được thực hiện dưới dạng 1-liner nhưng có vẻ hơi cồng kềnh nên tôi đã tạo một kịch bản để dễ dàng khởi chạy và chỉnh sửa và gọi nó findvids.shĐây là những gì hiệu quả với tôi.

Lưu ý: Tôi có thể không bao gồm TẤT CẢ các loại tệp video, nhưng tôi chắc chắn rằng tôi có hầu hết các loại. Một ngoại lệ đáng chú ý là .mkv vì đó là định dạng mục tiêu cho dự án và tôi không cần tìm các tệp đã được xử lý. Sẽ rất đơn giản để thêm các định dạng bổ sung (phần mở rộng) vào tập lệnh cho phù hợp với nhu cầu của bạn bằng cách kiểm tra mẫu và điều chỉnh cho phù hợp trong khi duy trì dấu ngoặc kép ở đầu và cuối biểu thức. Lưu ý rằng các tệp bạn không có quyền đọc sẽ không được tìm thấy.

#!/bin/bash
#This script is intended to find virtually all video file formats.
find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"

Chỉnh sửa dựa trên nhận xét:$cuối phần mở rộng biểu thị rằng thuật ngữ tìm kiếm phải được tìm thấy ở cuối dòng. nếu chúng tôi muốn khớp với đầu dòng thay vì chúng tôi sẽ sử dụng ^trước thuật ngữ chúng tôi dự định khớp. Bạn có thể tìm thấy các neo được giải thích chi tiết hơn ở đây.

Tôi đã làm một so sánh tốc độ với việc sử dụng định vị và kết quả là:

time locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v

real    0m8.887s
user    0m5.814s
sys 0m0.052s

so với

time find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp4$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"

real    0m2.795s
user    0m0.657s
sys 0m1.115s

Bất ngờ tìm thấy là nhanh hơn. Tôi sẽ sử dụng phương pháp này.

Chỉnh sửa: thử nghiệm thêm cho thấy rằng xác định vị trí nhanh hơn trên một máy khác. Tôi nghĩ rằng kết quả kiểm tra tốc độ ban đầu của tôi là bunk do bộ nhớ đệm.

Nguồn:

man find

man grep

/programming/7190565/unix-find-multipl-file-types


touch hello.mp4không tạo tệp video>: - D và bạn có thể muốn thay đổi tệp locateđể tăng tốc.
Rinzwind

@Rinzwind Điểm hợp lệ liên quan touchTuy nhiên vì điều đó chưa được thực hiện trên hệ thống này, nên nó không thực sự phù hợp trong trường hợp này. Theo như định vị thì tôi phải chạy updatedbtrước để có dữ liệu hiện tại phải không?
Anh Cả Geek

Có, cập nhật được thực hiện mỗi ngày vì vậy nếu bạn có thể cho rằng bạn không cần phải kéo dài vài giờ (tốc độ nó trả về kết quả cao hơn so với tìm kiếm: D)
Rinzwind

@Rinzwind Tôi muốn xem một ví dụ hoạt động về việc này bằng cách sử dụng định vị.
Anh Cả Geek

thêm một vị trí.
Rinzwind
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.