Hostwinds Tutoriales
Resultados de búsqueda para:
Tabla de contenido
Etiquetas: Cloud Servers, Dedicated Server
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.
Para enumerar todos los archivos desde el directorio actual, se pueden usar los siguientes comandos:
El sin adornos encontrar comando enumera recursivamente todos los archivos del directorio actual:
find
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 *
Usando el recursivo -R La opción permite el estándar ls comando para producir resultados similares:
ls -Rlha
Puede producir resultados análogos utilizando el entorno de escritorio GNOME:
En los siguientes ejemplos, buscaremos todos los archivos con el .antiguo extensión.
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.
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).
Sin el personaje comodín (*), la aplicación de archivos de escritorio gnome proporciona esencialmente la misma información que la encontrar dominio:
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:
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.
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).
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.
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.
Varios de los comandos mencionados anteriormente tienen opciones específicamente para encontrar archivos vacíos.Examinaremos los próximos.
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:
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.
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.
Ahora que sabemos cómo encontrar archivos, es posible que deseemos realizar acciones en ellos;como eliminar todo *.antiguo archivos.
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:
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
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:
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).
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:
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