
Se queremos executar directamente o arquivo haberá que darlle permisos de execución
chmod +x estructuraUNIX.sh
./estructuraUNIX.sh
# o
bash estructuraUNIX.sh
1. Buscar todos los archivos con extensión .log.
find . -name "*.log"
Busca en el directorio actual y subdirectorios todos los archivos cuyo nombre termine en
.log.
2. Buscar todos los archivos .log cuyo nombre empiece por app.
find . -name "app*.log"
El
*sustituye a cualquier cadena de caracteres (incluida la vacía) entreappy.log.
3. Buscar archivos .log cuyo nombre tenga exactamente un carácter después de app.
find . -name "app?.log"
El
?sustituye exactamente a un único carácter.
4. Buscar archivos .log donde el carácter después de app sea un número.
find . -name "app[0-9].log"
Los corchetes
[0-9]definen una clase de caracteres: cualquier dígito del 0 al 9.
5. Buscar archivos .log que empiecen por app pero que no contengan la palabra backup.
find . -name "app*.log" ! -name "*backup*"
!niega la condición siguiente. Se excluyen los archivos cuyo nombre contengabackup.
6. Buscar archivos cuyo nombre siga el patrón fileX.txt donde X es un único carácter.
find . -name "file?.txt"
El
?representa exactamente un carácter cualquiera en la posición X.
7. Buscar archivos fileX.txt donde X sea un número.
find . -name "file[0-9].txt"
La clase
[0-9]restringe X a un único dígito.
8. Buscar archivos fileX.txt donde X sea una letra.
find . -name "file[a-zA-Z].txt"
[a-zA-Z]cubre tanto letras minúsculas como mayúsculas.
9. Buscar archivos .csv cuyo nombre empiece por report.
find . -name "report*.csv"
El
*permite cualquier continuación del nombre trasreport.
10. Buscar archivos cuyo nombre contenga la palabra final.
find . -name "*final*"
Los
*en ambos extremos permiten quefinalaparezca en cualquier posición del nombre.
11. Buscar archivos temporales cuyo nombre siga el patrón test_?.tmp.
find . -name "test_?.tmp"
El
?representa un único carácter cualquiera después detest_.
12. Buscar archivos temporales donde después de test_ haya una letra.
find . -name "test_[a-zA-Z].tmp"
La clase
[a-zA-Z]restringe el carácter a letras del alfabeto.
13. Buscar archivos temporales donde después de test_ haya un número.
find . -name "test_[0-9].tmp"
La clase
[0-9]restringe el carácter a un único dígito.
14. Listar todos los archivos regulares del entorno.
find . -type f
-type ffiltra únicamente archivos regulares (no directorios ni enlaces).
15. Listar todos los directorios.
find . -type d
-type ddevuelve exclusivamente directorios.
16. Identificar todos los enlaces simbólicos.
find . -type l
-type ldevuelve únicamente los enlaces simbólicos (symlinks).
17. Encontrar todos los enlaces simbólicos existentes.
find . -type l
Equivalente al apartado anterior. Lista todos los symlinks del entorno.
18. Identificar enlaces simbólicos que estén rotos.
find . -xtype l
-xtype lsigue el enlace: si el destino no existe, el tipo sigue siendol→ enlace roto.
Alternativa más explícita:
find . -type l ! -exec test -e {} \; -print
Imprime los enlaces simbólicos cuyo destino no existe.
19. Localizar archivos que tengan más de un enlace duro.
find . -type f -links +1
-links +1selecciona archivos con más de un enlace duro (contador de inodo > 1).
21. Analizar qué ocurre al acceder a un archivo mediante un enlace simbólico que apunta a un fichero sin permisos.
# Crear fichero sin permisos y symlink
touch destino.txt
chmod 000 destino.txt
ln -s destino.txt enlace_sinpermisos
cat enlace_sinpermisos
El sistema sigue el enlace simbólico y aplica los permisos del fichero destino. El resultado es
Permission denied, igual que si se intentara leerdestino.txtdirectamente.
22. Identificar archivos que no tienen permisos de lectura.
find . -type f ! -readable
! -readableselecciona archivos sobre los que el usuario actual no tiene permiso de lectura.
23. Identificar archivos con permisos exactamente 600.
find . -type f -perm 600
-perm 600requiere que los permisos sean exactamenterw-------.
24. Encontrar archivos que tengan permisos de ejecución.
find . -type f -perm /111
/111significa que al menos uno de los bits de ejecución (usuario, grupo u otros) está activo.
25. Intentar acceder a archivos restringidos y explicar el resultado.
cat archivo_sin_permisos.txt
Si el archivo tiene permisos
000o el usuario no tiene permiso de lectura, el sistema devuelve:Permission deniedEl kernel comprueba los bits de permiso antes de abrir el fichero.
26. Determinar qué ocurre al acceder a un archivo sin permisos a través de un enlace simbólico.
cat enlace_a_restringido
El enlace simbólico no tiene permisos propios: el acceso se evalúa siempre sobre el fichero destino. El resultado es idéntico:
Permission denied.
28. Buscar líneas que contengan la palabra ERROR en los archivos de log.
grep "ERROR" *.log
Busca el literal
ERROR(sensible a mayúsculas) en todos los.logdel directorio actual.
29. Buscar la palabra error sin distinguir entre mayúsculas y minúsculas.
grep -i "error" *.log
-iactiva la búsqueda case-insensitive:ERROR,Error,error… son equivalentes.
30. Buscar líneas que contengan user seguido de un número.
grep "user[0-9]" *.log
La expresión regular
[0-9]exige un dígito inmediatamente después deuser.
31. Buscar líneas que contengan admin seguido de un número.
grep "admin[0-9]" *.log
Mismo patrón aplicado a
admin.