Comandos Linux esenciales: eliminar directorios vacíos, listar GID, ordenar archivos y gestionar alumnos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,28 KB

¿Qué orden hay que ejecutar para borrar los directorios vacíos debajo del directorio /home/herrero?

Comando recomendado (seguro, pide confirmación antes de eliminar cada directorio):

find /home/herrero -type d -user herrero -empty -ok rm -r '{}' ;

Explicación: find busca directorios (-type d) pertenecientes al usuario herrero (-user herrero) que estén vacíos (-empty) y, con -ok, solicita confirmación para ejecutar rm -r sobre cada resultado.

Liste el GID de los 10 primeros grupos creados que terminen en 'G'

Comando sugerido:

cat /etc/group | grep 'G$' | head -n 10 | cut -d: -f3 | sort -n

Explicación: Se listan las entradas de /etc/group cuyo nombre termina en 'G' (grep 'G$'), se toman las primeras 10 líneas (head -n 10), se extrae el campo GID (cut -d: -f3) y se ordenan numéricamente (sort -n).

Explicación del comando

Comando dado:

find /usr -nouser -type d | sort -nrf | head -5
  • find /usr -nouser -type d: busca directorios (-type d) en /usr que no pertenezcan a ningún usuario (-nouser).
  • sort -nrf: ordena los resultados. -n orden numérico, -r orden inverso (descendente) y -f ignora mayúsculas/minúsculas (fold case).
  • head -5: muestra las primeras 5 líneas del resultado ordenado.

Resultados y explicaciones de comandos varios

Preguntas: ¿cuál es el resultado de los siguientes comandos?

  • tail -2 planetas.txt — Muestra las dos últimas líneas del fichero planetas.txt.
  • grep -n Ana planeta.txt — Muestra las líneas que contienen "Ana" indicando el número de línea (-n).
  • wc -l planetas.txt — Cuenta el número de líneas del fichero planetas.txt.
  • sort -t: -k4,4 planetas.txt — Ordena planetas.txt por el campo 4, usando ':' como separador (-t:).
  • more planetas.txt | grep 12 | sort -t: -k1 | head -2 — Busca en planetas.txt las líneas que contienen "12", las ordena por el campo 1 y muestra las dos primeras.

Búsqueda de personas de 90 años y manipulaciones sobre alumnos.txt

  • grep -c ':90:' alumnos.txt — Cuenta cuántas líneas de alumnos.txt contienen ":90:" (personas de 90 años). Si se quiere solo el número total, grep -c ya lo devuelve; | wc -l no es necesario en ese caso.
  • Ordenar ascendentemente el fichero alumnos.txt por el apellido 2 y extraer las personas con apellido HERRERO, luego ordenar por edad en orden descendente:
sort -t: -k3,3 alumnos.txt | grep ':HERRERO:' | sort -t: -k4,4nr

Notas:

  • Se asume que el formato es campo1:campo2:campo3:campo4:campo5 y que el Apellido2 es el campo 3.
  • -k3,3 ordena por el campo 3; grep ':HERRERO:' filtra las líneas con apellido HERRERO (ajustar según la posición exacta del apellido); sort -k4,4nr ordena numéricamente y en orden inverso por el campo 4 (edad).

¿Cómo conocer a la persona más joven de todas?

sort -t: -k4,4n alumnos.txt | head -1

Explicación: sort -t: -k4,4n ordena por el campo 4 numéricamente (edad) en orden ascendente; head -1 muestra la persona más joven.

Ejercicio completo con ALUMNOS.TXT

Enunciado: Tenemos un fichero ALUMNOS.TXT cuyo contenido sigue el esquema: (NOMBRE:APELLIDO1:APELLIDO2:EDAD:MOVIL). Se pide:

  1. Ordena ascendentemente por la columna Apellido2.
  2. De esa ordenación, extrae las personas cuyo primer apellido sea HERRERO.
  3. Vuelve a ordenar el resultado por la edad en orden descendente.

Comando combinado (asumiendo separador ':' y Apellido2 en campo 3):

sort -t: -k3,3 ALUMNOS.TXT | grep ':HERRERO:' | sort -t: -k4,4nr

¿Cómo conocer qué persona es la más joven de todas?

sort -t: -k4,4n ALUMNOS.TXT | head -1

Almacenar edades y teléfonos ordenados por edad

Para generar telefonos.txt con los campos edad y teléfono, ordenados por edad:

sort -t: -k4,4n ALUMNOS.TXT | cut -d: -f4,5 > telefonos.txt

Preguntas de teoría

1ª Indica qué afirmación es verdadera

NTLDR es el archivo encargado del arranque de los sistemas operativos Windows NT, Windows 2000, Windows XP y Windows Server 2003. (Verdadero)

2ª ¿Cuáles de las siguientes son distribuciones de Linux?

SUSE, Debian, Ubuntu y Knoppix son distribuciones de Linux. (Todas las anteriores en la lista dada son distribuciones.)

3ª ¿Cuáles de las siguientes son distribuciones españolas?

Linex y Guadalinex, Max y Molinux, Lliurex y Linkat: todas las anteriores (son distribuciones con orígenes o proyectos vinculados a España).

Cómo conocer el identificador UUID de un dispositivo

Para obtener el UUID del dispositivo /dev/sdb2:

sudo blkid /dev/sdb2

El comando blkid muestra, entre otros datos, el UUID y el tipo de sistema de ficheros del dispositivo.

Notas finales y recomendaciones

  • En los ejemplos de sort es importante usar -kX,Y con los números de campo correctos y -n para orden numérico cuando se trabaja con edades.
  • Si la estructura de los ficheros difiere (por ejemplo, separadores distintos de ':'), ajustar -t y los números de campo en consecuencia.
  • Antes de ejecutar comandos destructivos (rm -r), pruebe con -print en find o use -ok para confirmar cada eliminación.

Entradas relacionadas: