Sistemimdeki tüm video dosyalarını nasıl bulabilirim?


11

*.*Resimler klasöründe bazı .3gp dosyaları olduğunu bilsem de Son Modifiye = Tüm, Tür = Videolar ve Size = Tüm tarafından Unity Lens Dosya arama ve filtreleme kullanarak çalıştı . Dosya sistemine takılı başka bir sürücüde çok sayıda video dosyam olduğunu biliyorum. Olası uzantıların bir listesini derledim ve findbunları kullanarak ./ -name "* .ext" -o (vs, vs, ad nauseum) ile hiç bir şansın olmadığı komutların sayısız yinelemesini denedim . Çözüm nedir?


Denemedim, ama OMG hakkında bir makale vardı! FSearch uygulaması hakkında Ubuntu. Kontrol etmek isteyebilirsiniz. omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad Öneri için teşekkür ederim ama sonuçlarımı 3 saniyenin altında CLI üzerinden aldığım için bu yaklaşımdan memnunum. Yine de bakacağım. :-)
Elder Geek

Ama komutu anlamadıysanız, unutacaksınız. Ve komutları anlasaydın, o zaman soruyu sormazdın. Sadece işi yapmak isteyenler için işleri kolaylaştırarak Ubuntu'yu geliştirelim. Bunu, uygulama ekleyerek veya kullanıcıları zaten var olan uygulamalara yönlendirerek yapabilirsiniz.
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad Genellikle araştırma ve analiz yoluyla elde ettiğim anlayıştan yoksuyorum. Bu yaklaşımın kalkınma için hayati olduğuna inanıyorum. Keşif süreci bir senaryo oluşturup ~ / bin içine yerleştirdiğim için burada paylaşmayı seçtiğim bir çözüme götürdü. Benim cevabımda olduğu için, motivasyonu olan herkes de ayrıştırabilir ve anlayabilir.
Elder Geek

Haklısın. Aslında masaüstü bilgisayarlara ihtiyacımız yok. Komut satırlarını kullanarak neredeyse her şeyi yapabiliriz. Fakat büyümek istiyorsak, çoğu insanın bu tür şeyleri öğrenmek istemediğinin farkında olmalıyız. Yığın ve yığın arasındaki farkları bile tanımlayamayan geliştiricileri biliyorum.
Jo-Erlend Schinstad

Yanıtlar:


14

Alternatif: dosyada arama :

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

veya sadece dosya adlarını istiyorsanız ...

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

-N, --no-pad: Dosya adlarını doldurmayın

-i, --mime: Dosya komutunun, daha geleneksel insan tarafından okunabilen dizelerden ziyade mime türü dizeler vermesine neden olur. Bu nedenle 'metin / düz; charset = us-ascii 'yerine' ASCII metni '. Bu seçeneğin çalışması için dosya, komutun kendisi tarafından tanınan dosyaları (metin dosyası türlerinin, dizinlerin çoğu vb. Gibi) işleme biçimini değiştirir ve alternatif bir 'sihirli' dosya kullanır. (Aşağıdaki DOSYALAR bölümüne bakın).


FILES bölümü şunları gösterir:

Dosyalar

/usr/share/misc/magic.mgc Varsayılan derlenmiş sihir listesi.

/usr/share/misc/magic Varsayılan sihirli dosyaları içeren dizin.


file yavaşsawwwwwwwwwwwwwwww olsa (bulduğu tüm dosyaları bulur açar) ama tüm bu uzantıları eklemek için gerek yoktur avantajı vardır.


Locate kullanarak:

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

Hangi "DOSYALAR bölüm, aşağıda"
Elder Geek

katma! adam sayfasında gizlendi: D
Rinzwind

Bu garip, daha hızlı bulunmasını beklerdim, ama konum komutunuzla zaman alırım: gerçek 0m8.985s ve find komutumla zaman alırım: gerçek 0m2.595s
Elder Geek

1
Oh ... locate tüm dosyaları yapar. Bulunduğunuz yer neresi değil mi?
Rinzwind

Çok fazla etkiye sahip olmayan -e anahtarını ekledim, ancak zaten giden dosyalar için sonuçları döndürmek yararlı görünmüyordu. verilen sys zaman bulmak için çok daha düşük ama sonuçlara gerçek zaman gerçekten umurumda sadece.
Elder Geek

5

Bunun 1 astar olarak yapılabileceğini hayal ediyorum, ancak biraz hantal görünüyordu, bu yüzden başlatma ve düzenleme kolaylığı için bir senaryo oluşturdum ve onu aradım findvids.shBu benim için işe yaradı.

Not: TÜM video dosyası türlerini kapsamamış olabilirim , ancak bunların çoğuna sahip olduğuma eminim. Dikkate değer bir istisna .mkv'dir, çünkü bu projenin hedef formatıdır ve daha önce işlenmiş dosyaları bulmama gerek yoktur. İfadenin başında ve sonunda tırnak işaretlerini koruyarak deseni inceleyip buna göre ayarlayarak komut dosyasına ihtiyaçlarınıza uygun ek formatlar (uzantılar) eklemek çok basit olmalıdır. Okuma izniniz olmayan dosyaların bulunmayacağını unutmayın.

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

Düzen Yorum dayalı:$ uzatma anlamına sonunda arama terimi satırın sonunda bulunması gerektiği. çizginin başlangıcını eşleştirmek ^istersek, eşleştirmeyi düşündüğümüz terimden önce kullanırdık . Bu çapaları daha ayrıntılı olarak burada bulabilirsiniz.

Ben locate kullanarak bir hız karşılaştırma yaptım ve sonuçları:

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

Beklenmedik bir şekilde bulmak daha hızlıdır. Bu yaklaşımı kullanacağım.

Düzenleme: ileri testler, konumun farklı bir makinede daha hızlı olduğunu gösterir. İlk hız testi sonuçlarımın önbellekleme nedeniyle ranza olduğunu düşünüyorum.

Kaynaklar:

man find

man grep

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


touch hello.mp4bir video dosyası oluşturmaz>: - D ve locatehızlandırmak için dosyayı değiştirmek isteyebilirsiniz .
Rinzwind

@Rinzwind touchBununla ilgili geçerli bir nokta Ancak, bu sistemde yapılmadığından, bu durumda gerçekten ilgili değildir. Bildiğim kadarıyla yer tespit söz konusu olduğunda ben updatedbgüncel veri olması için önce çalıştırmak zorunda kalacaktı?
Elder Geek

Evet, updatedb her gün yapılır, bu yüzden birkaç saat
sürmenize

@Rinzwind locate kullanarak bunun çalışan bir örneğini görmek isterim.
Elder Geek

bir yer ekledi.
Rinzwind
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.