Bagaimana saya bisa menemukan semua file video di sistem saya?

11

Saya mencoba menggunakan pencarian Unity Lens File untuk *.*dan pemfilteran oleh Last Modified = All, Type = Video, dan Size = All tetapi tidak menemukan apa pun meskipun saya tahu ada beberapa file .3gp di folder Pictures. Saya tahu bahwa saya memiliki banyak file video di drive lain yang terpasang pada sistem file juga. Saya menyusun daftar ekstensi yang mungkin dan saya mencoba berbagai iterasi dari findperintah yang memanfaatkannya dengan find ./ -name "* .ext" -o (dll, dll, ad nauseum) tanpa hasil apa pun. Apa solusinya?

Penatua Geek
sumber
Saya belum mencobanya, tetapi ada artikel tentang OMG! Ubuntu tentang aplikasi FSearch. mungkin kamu ingin memeriksanya. omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad
@ Jo-ErlendSchinstad Terima kasih atas sarannya tetapi karena saya mendapatkan hasil saya melalui CLI dalam waktu kurang dari 3 detik, saya puas dengan pendekatan ini. Saya akan melihatnya. :-)
Penatua Geek
Tetapi kecuali Anda mengerti perintahnya, Anda akan melupakannya. Dan jika Anda mengerti perintahnya, maka Anda tidak akan bertanya. Mari tingkatkan Ubuntu dengan membuat segalanya lebih mudah bagi mereka yang hanya ingin menyelesaikan pekerjaan. Anda dapat melakukannya dengan menambahkan aplikasi atau dengan mengarahkan orang ke aplikasi yang sudah ada.
Jo-Erlend Schinstad
@ Jo-ErlendSchinstad Saya sering mulai kurang pemahaman yang saya dapatkan melalui penelitian dan analisis. Saya percaya pendekatan ini sangat penting untuk pembangunan. Proses penemuan membawa saya ke solusi yang saya pilih untuk dibagikan di sini karena saya telah membuat skrip dan meletakkannya di ~ / bin saya tidak mungkin lupa dan tahu ke mana harus mencari jika saya melakukannya. Karena itu juga dalam jawaban saya, siapa pun dengan motivasi dapat menguraikan dan memahaminya juga.
Penatua Geek
Kamu benar. Kami sebenarnya tidak membutuhkan desktop. Kita dapat melakukan hampir semua hal menggunakan baris perintah. Tetapi jika kita ingin tumbuh, kita harus menyadari bahwa kebanyakan orang tidak ingin belajar hal seperti itu. Saya tahu pengembang yang bahkan tidak bisa menggambarkan perbedaan antara tumpukan dan tumpukan.
Jo-Erlend Schinstad

Jawaban:

14

Alternatif: cari di file :

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

atau jika Anda hanya menginginkan nama file ...

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

-N, --no-pad: Jangan pad nama file

-i, --mime: Menyebabkan perintah file untuk menghasilkan string tipe mime daripada yang lebih mudah dibaca manusia. Jadi bisa dikatakan 'teks / polos; charset = us-ascii 'daripada' teks ASCII '. Agar opsi ini berfungsi, file mengubah cara menangani file yang dikenali oleh perintah itu sendiri (seperti banyak jenis file teks, direktori dll), dan memanfaatkan file 'ajaib' alternatif. (Lihat bagian FILES, di bawah).


Bagian FILES menunjuk ke:

File

/usr/share/misc/magic.mgc Daftar sihir terkompilasi default.

/usr/share/misc/magic Direktori yang berisi file ajaib default.


file adalah slowwwwwwwwwwwwwwwww (itu akan membuka semua file yang ditemukan) tetapi memiliki keuntungan Anda tidak perlu menambahkan semua perluasan itu.


Menggunakan loc:

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
Rinzwind
sumber
Yang "bagian FILES, di bawah"
Penatua Geek
ditambahkan! itu disembunyikan di halaman manual: D
Rinzwind
Itu aneh, saya akan berharap mencari menjadi lebih cepat, tetapi dengan perintah cari Anda, saya mendapatkan waktu: 0m8.985s asli dan dengan perintah find saya mendapatkan waktu: 0m2.595s nyata
Penatua Geek
1
Oh ... cari tidak semua file. Temuan Anda berasal dari tempat Anda berada bukan?
Rinzwind
Saya memang menambahkan -e switch yang tidak memiliki banyak dampak tetapi mengembalikan hasil untuk file yang sudah hilang sepertinya tidak membantu. diberikan waktu sistem jauh lebih rendah untuk mencari tetapi waktu nyata untuk hasil adalah yang saya benar-benar peduli.
Penatua Geek
5

Saya membayangkan ini bisa dilakukan sebagai 1-liner tetapi tampaknya agak rumit jadi saya membuat skrip untuk kemudahan peluncuran dan pengeditan dan menyebutnya findvids.shIni yang berhasil bagi saya.

Catatan: Saya mungkin belum mencakup SEMUA jenis file video, tetapi saya yakin saya memiliki sebagian besar dari mereka. Satu pengecualian penting adalah .mkv karena itu adalah format target untuk proyek dan saya tidak perlu menemukan file yang sudah diproses. Seharusnya sangat sederhana untuk menambahkan format tambahan (ekstensi) ke skrip untuk memenuhi kebutuhan Anda dengan memeriksa polanya dan menyesuaikannya dengan tetap mempertahankan tanda kutip di awal dan akhir ekspresi. Perhatikan bahwa file yang tidak Anda miliki izin untuk membaca tidak akan ditemukan.

#!/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$"

Sunting berdasarkan komentar: Di $akhir ekstensi menandakan bahwa istilah pencarian harus ditemukan di akhir baris. jika kami ingin mencocokkan awal baris, kami akan menggunakan ^sebelum istilah yang ingin kami cocokkan. Anda dapat menemukan jangkar ini dijelaskan lebih terinci di sini.

Saya melakukan perbandingan kecepatan untuk menggunakan loc dan hasilnya adalah:

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

vs.

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

Menemukan tanpa terduga lebih cepat. Saya akan menggunakan pendekatan ini.

Sunting: pengujian lebih lanjut menunjukkan bahwa lokasi lebih cepat pada mesin yang berbeda. Saya pikir hasil tes kecepatan awal saya adalah susun karena caching.

Sumber:

man find

man grep

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

Penatua Geek
sumber
touch hello.mp4tidak membuat file video>: - D dan Anda mungkin ingin mengubahnya locateuntuk mempercepatnya.
Rinzwind
@Rinzwind Poin yang valid mengenai touchNamun karena itu belum dilakukan pada sistem ini, itu tidak benar-benar relevan dalam kasus ini. Sejauh menyangkut lokasi saya kemudian harus menjalankan updatedbsebelum untuk memiliki data saat ini kan?
Penatua Geek
Ya, updatedb dilakukan setiap hari jadi jika Anda bisa berasumsi Anda tidak perlu bertahan beberapa jam (kecepatan mengembalikan hasilnya adalah lebih besar daripada dengan find: D)
Rinzwind
@Rinzwind Saya ingin melihat contoh yang berfungsi dari penggunaan loc ini.
Penatua Geek
menambahkan sebuah lokasi.
Rinzwind