La idea básica es utilizar la utilidad de archivo para determinar el tipo de cada archivo y filtrar los archivos de video.
find /some/directory -type f -exec file -N -i -- {} + |
sed -n 's!: video/[^:]*$!!p'
Esto imprime los nombres de todos los archivos /some/directoryy sus subdirectorios de forma recursiva cuyo tipo MIME es un tipo de video.
El filecomando necesita abrir todos los archivos, lo que puede ser lento. Para acelerar las cosas:
- Restrinja el comando a los árboles de directorio donde es probable que se encuentre, como por ejemplo
/tmp, /var/tmpy a su directorio de inicio.
- Restrinja la búsqueda a archivos cuyo tamaño se encuentre en el estadio correcto, digamos al menos 10 MB.
- Restrinja la búsqueda a archivos cuya hora de modificación se encuentre en el estadio correcto. Tenga en cuenta que la descarga del archivo puede haber configurado su tiempo de modificación en el momento de la descarga o haber conservado el tiempo, dependiendo del programa que utilizó para descargar (y con qué configuraciones). También puede filtrar el tiempo de cambio de inodo (ctime), que es la hora en que el archivo se modificó o movió por última vez (creado, renombrado, etc.) de cualquier manera.
Aquí hay un ejemplo que restringe el tiempo de modificación para que sea al menos hace 60 días y el tiempo c para que no sea hace más de 100 días.
find /tmp /var/tmp ~ -type f -size +10M \
-mtime +60 -ctime -100 \
-exec file -N -i -- {} + |
sed -n 's!: video/[^:]*$!!p'
Gilles 'SO- deja de ser malvado'
fuente
/home/ravbholua/Downloads/Music_Command_line/[SOLVED] a code question regarding music file extensions_files/avatar774785_6.gif: image/jpeg; charset=binaryOtra línea de salida es:/home/ravbholua/Free Computer Networking Books Download | Ebooks Online Textbooks.html: text/html; charset=iso-8859-1solo necesito archivos de video que se ejecutarán en vlc player, etc.sedexcluir líneas que no coinciden (y también la opciónfilede no romper líneas en el lugar equivocado), vea mi edición.filees la única opción.Buscando por nombre de archivo
Como Chris mencionó en su respuesta, puede usarlo
findpara hacer esto, pero me resulta mucho más rápido buscar en lalocatebase de datos.Suponiendo que su distribución proporciona esta instalación, la mayoría de los grandes lo hacen, Ubuntu, Fedora, CentOS, etc.
Ejemplo
Búsqueda por tipo de archivo
Para buscar los archivos por tipo, puede usar el comando
filepara obtener una lista de información sobre el tipo de un archivo en particular.Aquí hay una lista aproximada de estos tipos de archivos de mi sistema, Fedora 19.
Puede usar este comando para buscar todos los archivos en su
/home/<user>directorio.Alternativamente, puede usar
filey buscar por tipos MIME que están categorizados como "video".Adaptando lo que hemos hecho arriba a algo como esto:
Puede usar
sedpara obtener solo los nombres de archivo:fuente
locateestá instalado, sino que la base de datos está construida.avi,.Como ahora especifica que no puede basarse en la extensión, también puede leer detenidamente
file(advertencia: esto podría llevar mucho tiempo):Si podría haber buscado por nombre de archivo, suponiendo que tiene una extensión de video común y está en algún lugar de su directorio de inicio:
También puedes usar una expresión regular:
Si tiene una buena idea acerca de cuándo lo descargó (y suponiendo que el mtime esté configurado en ese momento), también puede intentar reducirlo con la
-mtimeopción de búsqueda de GNU .fuente
/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=binaryOtra línea de la salida es:/home/ravbholua/Downloads/Music_Command_line/command line - how to start a video from the terminal? - Ask Ubuntu.html: text/html; charset=utf-8No está resolviendo mi propósito.