Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
103.3 Lección 2
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
How to get certified
  1. Tema 103: Comandos GNU y Unix
  2. 103.3 Administración básica de archivos
  3. 103.3 Lección 2

103.3 Lección 2

Certificación:

LPIC-1

Versión:

5.0

Tema:

103 Comandos GNU y Unix

Objetivo:

103.3 Gestión básica de archivos

Lección:

2 de 2

Introducción

Cómo encontrar archivos

A medida que utiliza su máquina, los archivos crecen progresivamente en número y tamaño. A veces se hace difícil localizar un archivo en particular. Afortunadamente, Linux proporciona find para buscar y localizar archivos rápidamente. find usa la siguiente sintaxis:

find STARTING_PATH OPTIONS EXPRESSION
STARTING_PATH

define el directorio donde comienza la búsqueda.

OPTIONS

controla el comportamiento y agrega criterios específicos para optimizar el proceso de búsqueda.

EXPRESSION

define la consulta de búsqueda.

$ find . -name "myfile.txt"
./myfile.txt

La ruta de inicio en este caso es el directorio actual. La opción -name especifica que la búsqueda se basa en el nombre del archivo. myfile.txt es el nombre del archivo a buscar. Cuando utilice globbing, asegúrese de incluir la expresión entre comillas:

$ find /home/frank -name "*.png"
/home/frank/Pictures/logo.png
/home/frank/screenshot.png

Este comando encuentra todos los archivos que terminan con .png comenzando desde el directorio /home/frank/ y dentro de éste. Si no comprende el uso del asterisco (*), se trata en la lección anterior.

Uso de criterios para acelerar la búsqueda

Use find para localizar archivos basados en tipo, tamaño u hora. Al especificar una o más opciones, los resultados deseados se obtienen en menos tiempo.

Los cambios para buscar archivos según el tipo incluyen:

-type f

búsqueda de archivos.

-type d

búsqueda de directorio.

-type l

búsqueda de enlaces simbólicos.

$ find . -type d -name "example"

Este comando encuentra todos los directorios en el directorio actual y dentro de éste, que tienen el nombre example.

Otros criterios que podrían usarse con find incluyen:

-name

realiza una búsqueda basada en el nombre dado.

-iname

búsquedas basadas en el nombre, sin embargo, las mayúsculas y minúsculas no son importantes (es decir, el caso de prueba myFile es similar a MYFILE).

-not

devuelve los resultados que no coinciden con el caso de prueba.

-maxdepth N

busca en el directorio actual así como en los subdirectorios N niveles de profundidad.

Localización de archivos por hora de modificación

find también permite filtrar una jerarquía de directorios en función de cuándo se modificó el archivo:

$ sudo find / -name "*.conf" -mtime 7
/etc/logrotate.conf

Este comando buscaría todos los archivos en todo el sistema de archivos (la ruta de inicio es el directorio raíz, es decir, /) que termina con los caracteres .conf y se ha modificado en los últimos siete días. Este comando requeriría privilegios elevados para acceder a los directorios comenzando en la base de la estructura de directorios del sistema, de ahí el uso de sudo aquí. El argumento pasado a mtime representa el número de días desde la última modificación del archivo.

Ubicar archivos por tamaño

find también puede localizar archivos por tamaño. Por ejemplo, buscando archivos más grandes que 2G en /var:

$ sudo find /var -size +2G
/var/lib/libvirt/images/debian10.qcow2
/var/lib/libvirt/images/rhel8.qcow2

La opción -size muestra archivos de tamaños correspondientes al argumento pasado. Algunos argumentos de ejemplo incluyen:

-size 100b

archivos de exactamente 100 bytes.

-size +100k

archivos de más de 100 kilobytes.

-size -20M

archivos de menos de 20 megabytes.

-size +2G

archivos de más de 2 gigabytes.

Note

Para encontrar archivos vacíos podemos usar: find . -size 0b o find . -empty.

Actuando sobre el conjunto de resultados

Una vez que se realiza una búsqueda, es posible realizar una acción en el conjunto resultante utilizando -exec:

$ find . -name "*.conf" -exec chmod 644 '{}' \;

Esto filtra cada objeto en el directorio actual (.) y dentro de éste para los nombres de archivo que terminan en x.conf y luego ejecuta el comando chmod 644 para modificar los permisos de archivo en los resultados.

Por ahora, no se preocupe con el significado de '{}'\; ya que se discutirá más adelante.

Usar grep para filtrar archivos basados en contenido

grep se usa para buscar la aparición de una palabra clave.

Considere una situación en la que debemos encontrar archivos basados en el contenido:

$ find . -type f -exec grep "lpi" '{}' \; -print
./.bash_history
Alpine/M
helping/M

Esto buscaría cada objeto en la jerarquía de directorio actual (.) en archivos (-type f) y luego ejecuta el comando grep "lpi" para cada archivo que satisfaga las condiciones. Los archivos que coinciden con estas condiciones se imprimen en la pantalla (-print). Las llaves ({}) son un marcador de posición para los resultados de la búsqueda find. Los {} están encerrados entre comillas simples (') para evitar pasar archivos grep con nombres que contengan caracteres especiales. El comando -exec se termina con un punto y coma (;), que se debe escapar (\;) para evitar la interpretación por parte del shell.

Agregar la opción -delete al final de una expresión eliminaría todos los archivos que coincidan. Esta opción debe usarse cuando esté seguro de que los resultados solo coinciden con los archivos que desea eliminar.

En el ejemplo a continuación, find localiza todos los archivos en la jerarquía comenzando en el directorio actual y luego elimina todos los archivos que terminan con los caracteres .bak:

$ find . -name "*.bak" -delete

Archivado de archivos

El comando tar (archivo y compresión)

El comando tar, abreviatura de “tape archive (r)”, se utiliza para crear archivos tar convirtiendo un grupo de archivos en un archivo. Los archivos se crean para mover o respaldar fácilmente un grupo de archivos. Piense en tar como una herramienta que crea un pegamento sobre el cual los archivos se pueden adjuntar, agrupar y mover fácilmente.

tar también tiene la capacidad de extraer archivos tar, mostrar una lista de los archivos incluidos en el archivo y agregar archivos adicionales a un archivo existente.

La sintaxis del comando tar es la siguiente:

tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(S)]
OPERATION

Solo se permite y requiere un argumento de operación. Las operaciones más utilizadas son:

--create (-c)

Crea un nuevo archivo tar.

--extract (-x)

Extrae todo el archivo o uno o más archivos de un archivo.

--list (-t)

Muestra una lista de los archivos incluidos en el archivo.

OPTIONS

Las opciones más utilizadas son:

--verbose (-v)

Muestra los archivos que se están procesando con el comando tar.

--file=archive-name (-f archive-name)

Especifica el nombre del archivo de almacenamiento.

ARCHIVE_NAME

El nombre del archivo.

FILE_NAME (S)

Una lista de nombres de archivos separados por espacios que se extraerán. Si no se proporciona, se extrae todo el archivo.

Crear un archivo

Supongamos que tenemos un directorio llamado stuff en el directorio actual y queremos guardarlo en un archivo llamado archive.tar. Ejecutaríamos el siguiente comando:

$ tar -cvf archive.tar stuff
stuff/
stuff/service.conf

Esto es lo que realmente significan esos parámetros:

-c

Crea un archivo.

-v

Muestra el progreso en la terminal mientras se crea el archivo, también conocido como modo “verbose”. -v siempre es opcional en estos comandos, pero es útil.

-f

Permite especificar el nombre de archivo del archivo.

En general, para archivar un único directorio o un único archivo en Linux, utilizamos:

tar -cvf NAME-OF-ARCHIVE.tar /PATH/TO/DIRECTORY-OR-FILE
Note

tar funciona de forma recursiva. Realizará la acción requerida en cada directorio posterior dentro del directorio especificado.

Para archivar múltiples directorios a la vez, se especifican todos los directorios delimitándolos por un espacio en la sección /PATH/TO/DIRECTORY-OR-FILE:

$ tar -cvf archive.tar stuff1 stuff2

Esto produciría un archivo de stuff1 y stuff2 en archive.tar

Extraer un archivo

Podemos extraer un archivo usando tar:

$ tar -xvf archive.tar
stuff/
stuff/service.conf

Esto extraerá el contenido de archive.tar en el directorio actual.

Este comando es el mismo que el comando de creación de archivo utilizado anteriormente, excepto el modificador -x que reemplaza al modificador -c.

Para extraer el contenido del archivo en un directorio específico, usamos -C:

$ tar -xvf archive.tar -C /tmp

Esto extraerá el contenido de archive.tar al directorio /tmp.

$ ls /tmp
stuff

Comprimiendo con tar

El comando GNU tar incluido en las distribuciones de Linux puede crear un archivo .tar y luego comprimirlo con la compresión gzip o bzip2 en un solo comando:

$ tar -czvf name-of-archive.tar.gz stuff

Este comando crearía un archivo comprimido usando el algoritmo gzip (-z).

Si bien la compresión gzip se usa con mayor frecuencia para crear archivos .tar.gz o .tgz, tar también admite la compresión bzip2. Esto permite la creación de archivos comprimidos bzip2, a menudo llamados archivos .tar.bz2, .tar.bz o .tbz.

Para hacerlo, reemplazamos -z por gzip con -j por bzip2:

$ tar -cjvf name-of-archive.tar.bz stuff

Para descomprimir el archivo, reemplazamos -c por -x, donde x significa “extract”:

$ tar -xzvf archive.tar.gz

gzip es más rápido, pero generalmente se comprime un poco menos, por lo que se obtiene un archivo algo más grande. bzip2 es más lento, pero se comprime un poco más, por lo que se obtiene un archivo algo más pequeño. Sin embargo, en general, gzip y bzip2 son prácticamente lo mismo y ambos funcionarán de manera similar.

Alternativamente, podemos aplicar la compresión gzip o bzip2 usando el comando gzip para las compresiones gzip y el comando bzip para las compresiones bzip. Por ejemplo, para aplicar la compresión gzip, use:

gzip FILE-TO-COMPRESS
gzip

crea el archivo comprimido con el mismo nombre pero con un final .gz.

gzip

elimina los archivos originales después de crear el archivo comprimido.

El comando bzip2 funciona de manera similar.

Para descomprimir los archivos, usamos gunzip o bunzip2 dependiendo del algoritmo utilizado para comprimir un archivo.

El comando cpio

cpio significa “copy in, copy out” (copiar dentro, copiar fuera). Se utiliza para procesar archivos de almacenamiento como archivos *.cpio o *.tar.

cpio realiza las siguientes operaciones:

  • Copiar archivos a un archivo.

  • Extraer archivos de un archivo.

Toma la lista de archivos de la entrada estándar (principalmente salida de ls).

Para crear un archivo cpio, utilizamos:

$ ls | cpio -o > archive.cpio

La opción -o indica a cpio que cree una salida. En este caso, el archivo de salida creado es archive.cpio. El comando ls lista el contenido del directorio actual que se archivará.

Para extraer el archivo utilizamos:

$ cpio -id < archive.cpio

La opción -i se usa para realizar el extracto. La opción -d crearía la carpeta de destino. El caracter < representa la entrada estándar. El archivo de entrada a extraer es archive.cpio.

El comando dd

dd copia datos de una ubicación a otra. La sintaxis de la línea de comandos de dd difiere de muchos otros programas de Unix, utiliza la sintaxis option=value para sus opciones de línea de comandos en lugar de los formatos estándar GNU -option value o --option=value:

$ dd if=oldfile of=newfile

Este comando copiará el contenido de oldfile en newfile, donde if= es el archivo de entrada y of= se refiere al archivo de salida.

Note

El comando dd normalmente no mostrará nada en la pantalla hasta que el comando haya finalizado. Al proporcionar la opción status=progress, la consola mostrará la cantidad de trabajo que realiza el comando. Por ejemplo: dd status=progress if=oldfile of=newfile.

dd también se utiliza para cambiar datos a mayúsculas/minúsculas o escribir directamente en dispositivos de bloque como /dev/sdb:

$ dd if=oldfile of=newfile conv=ucase

Esto copiaría todo el contenido de oldfile en newfile y capitalizaría todo el texto.

El siguiente comando hará una copia de seguridad de todo el disco duro ubicado en /dev/sda en un archivo llamado backup.dd:

$ dd if=/dev/sda of=backup.dd bs=4096

Ejercicios Guiados

  1. Considere la siguiente lista:

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • ¿Qué tipo de archivos generaría este comando?

    • ¿En qué directorio comienza la búsqueda?

  2. Un usuario desea comprimir su carpeta de respaldo. Él usa el siguiente comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    ¿Qué opción falta para comprimir la copia de seguridad utilizando el algoritmo gzip?

Ejercicios Exploratorios

  1. Como administrador del sistema, es necesario realizar verificaciones regulares para eliminar archivos voluminosos. Estos voluminosos archivos se encuentran en /var y terminan con una extensión .backup.

    • Escriba el comando, usando find, para localizar estos archivos:

    • Un análisis de los tamaños de estos archivos revela que varían de 100M a 1000M. Complete el comando anterior con esta nueva información, para que pueda ubicar esos archivos de respaldo que van desde 100M a 1000M:

    • Finalmente, complete este comando, con la acción de eliminación para que se eliminen estos archivos:

  2. En el directorio /var, existen cuatro archivos de respaldo:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Usando tar, especifique el comando que crearía un archivo con el nombre db-first-quarter-2018.backup.tar:

    • Usando tar, especifique el comando que crearía el archivo comprimido y comprímalo usando gzip. Tenga en cuenta que el nombre del archivo resultante debe terminar con .gz:

Resumen

En esta sección, aprendió:

  • ¿Cómo encontrar archivos con find?

  • ¿Cómo agregar criterios de búsqueda basados en el tiempo, tipo de archivo o tamaño al proporcionar un argumento para find?

  • ¿Cómo actuar en un conjunto devuelto?

  • ¿Cómo archivar, comprimir y descomprimir archivos usando tar?

  • Procesar archivos con cpio.

  • Copiar archivos con dd.

Respuestas a los ejercicios guiados

  1. Considere la siguiente lista:

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • ¿Qué tipo de archivos generaría este comando?

      Directorios.

    • ¿En qué directorio comienza la búsqueda?

      /home/frank/Documents

  2. Un usuario desea comprimir su carpeta de respaldo. Él usa el siguiente comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    ¿Qué opción falta para comprimir la copia de seguridad utilizando el algoritmo gzip?

    Option -z.

Respuestas a ejercicios exploratorios

  1. Como administrador del sistema, es necesario realizar verificaciones regulares para eliminar archivos voluminosos. Estos voluminosos archivos se encuentran en /var y terminan con una extensión .backup.

    • Escriba el comando, usando find, para localizar estos archivos:

      $ find /var -name *.backup
    • Un análisis de los tamaños de estos archivos revela que varían de 100M a 1000M. Complete el comando anterior con esta nueva información, para que pueda ubicar esos archivos de respaldo que van desde 100M a 1000M:

      $ find /var -name *.backup -size +100M -size -1000M
    • Finalmente, complete este comando, con la acción de eliminación para que se eliminen estos archivos:

      $ find /var -name *.backup -size +100M -size -1000M -delete
  2. En el directorio /var, existen cuatro archivos de respaldo:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Usando tar, especifique el comando que crearía un archivo con el nombre db-first-quarter-2018.backup.tar:

      $ tar -cvf db-first-quarter-2018.backup.tar db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup
    • Usando tar, especifique el comando que crearía el archivo comprimido y comprímalo usando gzip. Tenga en cuenta que el nombre del archivo resultante debe terminar con .gz:

      $ tar -zcvf db-first-quarter-2018.backup.tar.gz db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

103.4 Uso de secuencias de texto, tuberías y redireccionamientos (103.4 Lección 1)

Leer la próxima lección

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.