Ubuntu'da video dosyaları nasıl aranır?


12

Birkaç ay önce bir video indirmiştim. Kaydedildiği ismi çok iyi hatırlamıyorum. Orada videomu arayabilmem için sadece video dosyalarını çıktılayacak herhangi bir komut veya yöntem var mı? Man sayfalarından, bu işi bulmak için herhangi bir seçenek bulamadım.

İndirdiğim video dosyasının herhangi bir uzantısı olabilir (webm vb. Gibi) ve o zaman adı şimdi hatırlamadığım 'abcde' gibi bir şeyle değiştirmiş olabilirim. Bu yüzden arama dosya adına dayanamaz!

(Sadece bir benzerlikten bahsetmek gerekirse: perl'de bir dosyanın metin dosyası mı yoksa ikili dosya mı olduğunu kontrol etmek için komutlar vardır. Benzer şekilde video dosyasının veya multimedya dosyasının olup olmadığını kontrol etmenin bir yolu olabilir)

Yanıtlar:


15

Temel fikir, her dosyanın türünü belirlemek ve video dosyalarına filtre uygulamak için dosya yardımcı programını kullanmaktır .

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

Bu /some/directory, MIME türü bir video türü olan tüm dosyaların ve alt dizinlerinin adlarını yinelemeli olarak yazdırır .

fileKomut yavaş olabilir her dosyayı açmak gerekiyor. İşleri hızlandırmak için:

  • Bu gibi olması olasıdır dizin ağaçlarına komutu sınırla /tmp, /var/tmpve ev dizini.
  • Aramayı boyutu en az 10 MB olan doğru ballparkta olan dosyalarla sınırlandırın.
  • Aramayı, değiştirme zamanı doğru ballparkta olan dosyalarla sınırlandırın. Dosyayı indirmenin, hangi programı indirdiğinize (ve hangi ayarlarla) bağlı olarak değişiklik zamanını indirme zamanına ayarladığını veya süreyi koruduğunu unutmayın. Ayrıca, dosyanın en son değiştirildiği veya taşındığı (oluşturulduğu, yeniden adlandırıldığı vb.) İnode değiştirme süresine (ctime) filtre uygulayabilirsiniz.

Değişiklik süresini en az 60 gün önce ve ctime'ı 100 günden daha önce olmayacak şekilde sınırlayan bir örnek aşağıdadır.

find /tmp /var/tmp ~ -type f -size +10M \
     -mtime +60 -ctime -100 \
     -exec file -N -i -- {} + |
sed -n 's!: video/[^:]*$!!p'

1. komutunuz diğer (video hariç) birçok dosyayı getirir. Örneğin, çıktı bir satırı: çıktı /home/ravbholua/Downloads/Music_Command_line/[SOLVED] a code question regarding music file extensions_files/avatar774785_6.gif: image/jpeg; charset=binary başka bir satır: /home/ravbholua/Free Computer Networking Books Download | Ebooks Online Textbooks.html: text/html; charset=iso-8859-1 Ben sadece vlc oynatıcı, vb çalışacak video dosyalarına ihtiyacım var
Ravi

@Ravi Yanlışlıkla sedeşleşmeyen satırları hariç tutma seçeneğini (ve ayrıca filesatırları yanlış yerde kırmama seçeneğini) bırakmıştım , düzenlememe bakın.
Gilles 'SO- kötü olmayı kes'

Evet Gilles, istediğim buydu. Mükemmel çalıştı! Komutunu çalıştırdıktan sonra, sistemimin farkında olmadığım birçok video (bazıları tam ve bazıları eksik) olduğunu öğrendim. Teşekkür ederim.
Ravi

1
Video dosyalarınızda öngörülebilir uzantılar yoksa, bu ideal çözümdür. Tatil için filetek seçenek.
miguelg

13

Dosya adına göre arama

Chris'in cevabında belirttiği gibi findbunu yapmak için kullanabilirsiniz , ancak locateveritabanında arama yapmayı çok daha hızlı buluyorum .

Dağıtımınızın bu tesisi sağladığını varsayarsak, büyük olanların çoğu Ubuntu, Fedora, CentOS vb.

Misal

$ locate --basename .mp4 .mkv .wmv .flv .webm .mov .avi | head -5
/home/saml/Desktop/sample_mpeg4.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 1.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 10.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 2.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 3.mp4

Dosya türüne göre arama

Dosyaları türe göre bulmak için file, belirli bir dosya türü hakkında bilgi listesi almak üzere komutu kullanabilirsiniz .

Sistemim Fedora 19'daki bu dosya türlerinin kabaca bir listesi.

  • .mp4: ISO Ortamı, MPEG v4 sistemi, sürüm 1.
  • .mkv: EBML dosyası, içerik oluşturucu matroska
  • .wmv: Microsoft ASF
  • .flv: Macromedia Flash Videosu
  • .webm: WebM
  • .mov: ISO Ortamı, Apple QuickTime filmi
  • .avi: AVI

Dizininizdeki tüm dosyaları bulmak için bu komutu kullanabilirsiniz /home/<user>.

$ find /home/<user> -type f -exec file {} + | \
    grep -E "MPEG v4|EBML|\
      Microsoft ASF|Macromedia Flash Video|WebM|Apple QuickTime movie|AVI"

Alternatif fileolarak, "video" olarak sınıflandırılan mime türlerini kullanabilir ve arayabilirsiniz.

 -i, --mime
         Causes the file command to output mime type strings rather than 
         the more traditional human readable ones.  Thus it may say 
         ‘text/plain; charset=us-ascii’ rather than “ASCII text”.

Yukarıda yaptığımız şeyi böyle bir şeye uyarlamak:

$ find /home/<user> -type f -exec file -i {} + | grep video

Yalnızca seddosya adlarını almak için kullanabilirsiniz :

$ find /home/<user> -type f -exec file -i {} + |
    sed -n '/video/s/:[^:]\+$//p'

+1, bu da, elbette, sadece locateyüklü olduğunu varsaymaz , aynı zamanda veritabanının oluşturulduğunu varsayar .
Chris Down

Evet, ayrıca veritabanı genellikle çoğu dağıtımda her gece kurulur, bu nedenle son eklenen dosyalar gece işi çalışana ve eklenene kadar DB'de olmaz.
slm

1
En yaygın olanlardan birini unuttun avi.
Faheem Mitha

6

Artık uzantıya filedayanamayacağını belirttiğiniz için, inceleyebilirsiniz (uyarı: bu uzun sürebilir):

find ~ -type f -exec file -i {} + | grep video 

Dosya adına göre arama yapabildiyseniz, ortak bir video uzantısına sahip olduğunu ve ana dizininizde bir yer olduğunu varsayarsak:

find ~ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'

Bir normal ifadeyi de kullanabilirsiniz:

find ~ -type f -regex '.*\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)'

Ne zaman indirdiğiniz hakkında iyi bir fikriniz varsa (ve mtime'ın o zamana ayarlandığını varsayarsanız), GNU find'ın -mtimeseçeneğiyle daraltmayı da deneyebilirsiniz .


1
Ayrıca bazı dosyaları eşik değerden daha büyük boyutta da gösterebilirsiniz (video dosyalarının çok büyük olduğu varsayılarak) ...
ChuckCottrill

Chris Down, bu dosya adını kullanma yöntemi çalışmaz. Q'umu düzenledim, lütfen bir göz atın
Ravi

@Ravi Mimetypes kullanan güncellenmiş cevabımı görün.
Chris Down

1. komutunuz başka (video dışında) birçok dosyayı bile getiriyor. Örneğin, çıktıdan bir satır: Çıktıdan /home/ravbholua/Downloads/Music_Command_line/Any s_w to cut_add audio files, convert video to audio?_files/post_old.gif: image/gif; charset=binary diğer satır: /home/ravbholua/Downloads/Music_Command_line/command line - how to start a video from the terminal? - Ask Ubuntu.html: text/html; charset=utf-8 Amacımı çözmüyor.
Ravi
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.