Hostwinds Tutoriales

Resultados de búsqueda para:


Tabla de contenido


Listado de archivos
encontrar
localizar
ls
GNOMO
Buscando por nombre
encontrar
localizar
GNOMO
Buscando por tamaño
du
encontrar
localizar
GNOMO
Encontrar archivos vacíos
encontrar
localizar
GNOMO
Realizar acciones en coincidencias de archivos
encontrar
localizar
GNOMO
Refinar las búsquedas con el comando GREP
Conclusión

Cómo encontrar archivos en Ubuntu con terminal

Etiquetas: Cloud Servers,  Dedicated Server 

Listado de archivos
encontrar
localizar
ls
GNOMO
Buscando por nombre
encontrar
localizar
GNOMO
Buscando por tamaño
du
encontrar
localizar
GNOMO
Encontrar archivos vacíos
encontrar
localizar
GNOMO
Realizar acciones en coincidencias de archivos
encontrar
localizar
GNOMO
Refinar las búsquedas con el comando GREP
Conclusión

En este tutorial, repasaremos una serie de métodos para encontrar archivos y directorios (es decir, carpetas) en Ubuntu 20.04 LTS, como encontrar todos los archivos con un .antiguo extensión o búsqueda de todos los archivos y directorios mayores de 2 GB.También repasaremos cómo ejecutar uno o más comandos en cada archivo encontrado.

Tenga en cuenta que uno de los comando que usaremos es localizar, que no viene de forma nativa con Ubuntu.los localizar el comando es a menudo más rápido que encontrar Porque mantiene una base de datos de todos los archivos que se actualiza cada 24 horas.los localizar El comando se puede instalar de la siguiente manera:

sudo apt install mlocate

Debido a que todo en los sistemas operativos similares a UNIX, incluido Ubuntu, se considera un archivo, el término "archivo" también indicará "directorio" a menos que se solicite lo contrario.Además, los ejemplos de entorno de escritorio se basan en GNOMO.Para aprender a acceder a su computadora Ubuntu remota usando Gnome, consulte Uso de Windows Remote Desktop con Ubuntu 20.04 TLS.

Con eso, comencemos.

Listado de archivos

Para enumerar todos los archivos desde el directorio actual, se pueden usar los siguientes comandos:

encontrar

El sin adornos encontrar comando enumera recursivamente todos los archivos del directorio actual:

find

localizar

los localizar El comando es similar a encontrar pero requiere un patrón (el carácter comodín en este caso):

locate *


La velocidad de localizar tiene un precio, sin embargo.Los archivos modificados recientemente pueden no reflejarse en la base de datos.Para resolver este problema, puede actualizar la base de datos con sudo actualizadob (que podría tomar algún tiempo) o usar el -mi opción que solo enumera los archivos existentes en el momento en que el localizar el comando se ejecuta (esencialmente equivalente a encontrar):

locate -e *

ls

Usando el recursivo -R La opción permite el estándar ls comando para producir resultados similares:

ls -Rlha

GNOMO

Puede producir resultados análogos utilizando el entorno de escritorio GNOME:

Buscando por nombre

En los siguientes ejemplos, buscaremos todos los archivos con el .antiguo extensión.

encontrar

Debido a que estamos buscando todos los archivos, usamos el sudo comandar para evitar errores de permiso e iniciar la búsqueda del directorio raíz (/):

sudo find / -iname *.old


Tenga en cuenta que el -Eneje opción ignora el caso mientras -nombre no es.

localizar

En el siguiente, el -i La opción ignora el caso:

sudo locate -i *.old


Curiosamente, incluso con el -mi opción, el localizar El comando no encuentra el /run/blkid/blkid/tab.old archivo (mientras encontrar lo hace).

GNOMO

Sin el personaje comodín (*), la aplicación de archivos de escritorio gnome proporciona esencialmente la misma información que la encontrar dominio:

Buscando por tamaño

Digamos que nos gustaría encontrar todos los archivos mayores de 50 Mib.Para esta tarea, podemos agregar el du Comando a nuestra lista de probables sospechosos:

du

los du El comando fue diseñado específicamente para esta tarea:

sudo du / -ha --threshold=50M

los -HOH La opción proporciona tamaños de archivo estándar (humanos) y el -uno La opción incluye archivos y directorios:


Para suprimir (los cuatro) mensajes de error, puede usar el 2>&- argumento.También puede ordenar por tamaño de archivo:

sudo du / -ha --threshold=50M 2>&- | sort -h


La última fila muestra que el disco contiene 2.8 GIB de datos en total.

encontrar

Los siguientes encuentran todos los archivos (excluyendo directorios) mayores de 50 MIB:

sudo find / -size +50M


Para ver el tamaño de cada archivo en bytes, puede usar el -ls opción (y 2>&- Para eliminar los mensajes de error):

sudo find / -size +50M -ls 2>&-

La séptima columna proporciona el tamaño de cada archivo, en bytes.Para ver solo la ruta del archivo, el tipo y el tamaño, puede usar el -Printf Opción, como se muestra:

sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t


los %pags Devuelve el nombre de archivo, %Y el tipo de archivo, % s el tamaño en bytes y \norte genera un carácter nuevo (para más detalles, ejecutar Hombre encontrar).

los columna -t El comando crea columnas basadas en caracteres en blanco.Tenga en cuenta que 140737477885952 bytes es poco menos de 128 PIB, lo cual es claramente incorrecto.Sigue una interpretación más precisa:

sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t


En lo anterior, %k proporciona el tamaño del archivo en KIB (en lugar de % s bytes).

localizar

Porque el localizar La base de datos del comando no contiene información del tamaño del archivo, no puede enumerar archivos más grandes de 50 MIB únicamente con localizar.

GNOMO

La aplicación de archivos de escritorio de GNOME proporciona típica GUI resultados:

Como se puede ver anteriormente, la clasificación de la columna de tamaño no es de gran ayuda con respecto a encontrar todos los archivos mayores de 50 MIB.los du o encontrar Los comandos son más apropiados para tal tarea.

Encontrar archivos vacíos

Varios de los comandos mencionados anteriormente tienen opciones específicamente para encontrar archivos vacíos.Examinaremos los próximos.

encontrar

Para el encontrar Comando, esta tarea es sencilla:

sudo find /tmp -empty -type f,d

Este comando encuentra todos los archivos y directorios vacíos (es decir, -Tipo F, D) dentro de /TMP carpeta, como se muestra:


¿Pero cuál es cuál?Como arriba, podemos usar -Printf y columna como sigue:

sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t


Tenga en cuenta que cada directorio vacío requiere que existan 4096 bytes (4 KIB) en el sistema de archivos Ubuntu.Aquí hay un ejemplo de un solo directorio vacío y un solo archivo vacío:

localizar

De nuevo, porque el localizar La base de datos no contiene información del tamaño del archivo, no hay forma de encontrar directamente archivos/directorios vacíos utilizando solo el localizar mando.

GNOMO

La aplicación de archivos de escritorio de GNOME proporciona resultados relativamente no útiles:

Uno tendría que hacer mucho clic para identificar todos los archivos vacíos utilizando el entorno de escritorio GNOME.

Realizar acciones en coincidencias de archivos

Ahora que sabemos cómo encontrar archivos, es posible que deseemos realizar acciones en ellos;como eliminar todo *.antiguo archivos.

encontrar

los encontrar comandos -Exec La opción ejecuta el comando proporcionado una vez para cada archivo coincidente.Por ejemplo:

sudo find / -iname "*.old" -exec echo {} \;

En pocas palabras, esto ejecuta el eco comando en cada .antiguo archivo encontrado. Aquí el {} La sintaxis representa cada archivo coincidente.Así, si vmlinux.old es un archivo coincidente, entonces el comando echo vmlinux.old es ejecutado.El semicolon se usa para indicar el final de la cadena de comando después de la -Exec opción.Debido a que el punto y coma tiene un significado especial, debe escaparse con los personajes de barra de barra de barras de fondo (\), como sigue:


Para eliminar todo *.antiguo archivos del /Inicio/Karlito directorio (o ~ directorio), puede ejecutar el siguiente comando:

sudo find . -iname "*.old" -exec rm -f {} \;

Podemos ver que todos los archivos en el ~ Se han eliminado el directorio:

localizar

los localizar El comando no tiene un -Exec opción.Sin embargo, podemos emular esta funcionalidad utilizando el Xargs dominio:

sudo locate -i "*.old" | xargs -0 echo


los -0 La opción permite Xargs para manejar correctamente los caracteres atípicos del nombre de archivo.

Para eliminar todo *.antiguo archivos del /Inicio/Karlito directorio, puede ejecutar:

sudo locate -i "/home/karlito/*.old" | xargs rm


Del mismo modo, para eliminar todo .antiguo archivos enumerados en el localizar base de datos del comando (generalmente todo *.antiguo archivos en el disco), puede ejecutar:

sudo locate -i "*.old" | xargs rm

GNOMO

Para realizar la misma acción utilizando la aplicación de archivos, primero busque todos los archivos con a.antiguo extensión:

A continuación, seleccione todos los archivos coincidentes presionando Ctrl + A. Luego, presione la tecla Eliminar y seleccione la Eliminar botón:

Podemos confirmar la eliminación en el símbolo del sistema de la siguiente manera:


Porque el Xargs El comando es rápido, flexible y se puede usar con muchos otros comandos, generalmente tiene sentido usarlo para la mayoría de los escenarios.Por ejemplo, lo siguiente copia todos los archivos que contienen "copia de seguridad" en un directorio llamado "copias de seguridad" en la carpeta de inicio del usuario:

sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'

Sigue una explicación detallada de cada comando y opción:

  • sudo Permite el encontrar Comando de buscar sin encontrar el permiso denegado errores.
  • encontrar Un comando que busca archivos (ejecutar Hombre encontrar para detalles).
  • / Inicia la búsqueda desde el directorio raíz.
  • -Tipo F Búsqueda de archivos (y no directorios).
  • -iname "*copia de seguridad*" Mientras ignora el caso, instruye el encontrar Comando para encontrar todos los archivos que contienen "copia de seguridad" en algún lugar del nombre de archivo.Tenga en cuenta el uso de los dos (*) personajes comodín.
  • -Print0 Formatea la salida del encontrar comando de tal manera que pueda ser consumido por otros comandos, incluidos xarg.En particular, -Print0 Permite que los nombres de archivos que contengan nuevas líneas u otros tipos de espacio en blanco sean interpretados correctamente por programas que pueden procesar dicha entrada.Tenga en cuenta que el -print0 La opción corresponde al -0 opción del Xargs mando.
  • Xargs Convierte su entrada estándar en argumentos para otros comandos, como el estadística y CP mando.
  • -0 Prepara el Xargs Comando para recibir entrada que pueda contener espacio en blanco, marcas de cotización o barras de retroilches.
  • -YO La opción de capital "I" permite que la entrada Xargs para ser utilizado en más de un lugar, como Via {} simbólico.
  • sh -c Esto invoca un intérprete de línea de comandos separado (shell) y ejecuta los comandos que se le pasan.En este caso, 'stat -c " %n %s bytes" {};CP {} ~/copias de seguridad '.Este segundo shell permite Xargs para ejecutar múltiples comandos usando el {} simbólico.
  • stat -c " %n %s bytes" {} Muestra el nombre %norte y tamaño % s del archivo contenido en el {} Token (en bytes).
  • ; El semicolon permite ejecutar dos o más comandos en la misma línea.
  • CP {} ~/copias de seguridad Copia el dado {} archivo al ~/copias de seguridad directorio.

Poner todo esto da como resultado una salida similar a la siguiente:

En lo anterior, podemos ver todos los archivos que se copiaron teóricamente a ~/copias de seguridad.Es teórico en que no todos los archivos fueron realmente copiados:

Este es un punto importante: no hubo problemas con respecto a la visualización estadística información relacionada pero hubo problemas para el CP comando (que no se informan).

Refinar las búsquedas con el comando GREP

A continuación, buscaremos el contenido de los archivos coincidentes para encontrar una o más palabras clave.Para comenzar, examinaremos todo *.Iniciar sesión archivos para ocurrencias de advertencia.Para hacerlo, usamos el omnipresente grep dominio:

sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning

Ejecutando los comandos antes de la tubería ( | ) El operador devuelve la lista esperada de *.Iniciar sesión archivos.Sin embargo, la ejecución de toda la línea de comando devuelve por permiso de archivo. Errores denegados:


Esto es porque el grep el comando también requiere sudo elevación.Por lo tanto, la siguiente línea de comando produce los resultados deseados (ambos -Eneje y -i ignorar caso):

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning

Para encontrar todo *.Iniciar sesión Archivos que contienen advertencia, críticoy/o error, podemos usar la lógica o ( | ) Operador, que debe escaparse para que no se confunda con el operador de tubería estándar:

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'

La opción "L" en minúsculas -La Muestra la lista de archivos coincidentes y no el contenido asociado:

Conclusión

Este tutorial comparó y contrastó múltiples formas de encontrar archivos en Ubuntu 22.04 LTS.También proporcionó técnicas para ejecutar comandos en archivos encontrados.Los sistemas operativos similares a UNIX, incluido Ubuntu, ofrecen un entorno de línea de comandos extremadamente rico para ayudarlo a administrar su computadora/servidor de Ubuntu.

Escrito por Karlito Bonnevie  /  junio 20, 2022