Bash Script para crear un archivo para cada permiso único en un comando de listado/búsqueda e imprimir cada instancia de directorio/ruta de archivo de ese permiso

Bash Script para crear un archivo para cada permiso único en un comando de listado/búsqueda e imprimir cada instancia de directorio/ruta de archivo de ese permiso

Estoy intentando crear un script bash que pueda realizar un comando de búsqueda para obtener los permisos y la ruta completa de cada archivo/directorio en un árbol de directorios y crear un archivo para cada permiso único e imprimir cada ruta completa del archivo a ese archivo de permisos. Luego, en el futuro, podría leer estos archivos y usarlos para obtener permisos tal como estaban cuando ejecuté el script.

Por ejemplo:

drwxrwxrwx /home/user/testDirectory  
-rwxrwxrwx /home/user/testDirectory/testFile  
drwxr-xr-x /home/user/testDirectory/directory2  
-rwxr-xr-x /home/user/testDirectory/directory2/test2 

Lo anterior crearía 2 archivos (por ejemplo, 777.txty 755.txt) que tendrían cada uno 2 líneas.

Estoy luchando con la lógica para crear un archivo para cada permiso único y luego enviar la ruta completa del archivo.

Lo que tengo hasta ahora (dudo que la matriz sea necesaria, pero he jugado a ordenar la matriz por permiso, lo que puedo hacer con -k 1.2 en el comando de clasificación para ignorar la bandera d):

declare -a PERMS

i=0

while read line
do
     PERMS[$i]="$line"
     (( i++ ))
done < <( find /opt/sas94 -printf ""%M/" "%p/"\n")

Respuesta1

Prueba esto:

#!/bin/bash

while read file; do
        stat -c '%A %n' "$file" >> $(stat -c '%a' "$file").txt
done < <(find "$1")

Uso:

./script.sh /path/to/directory
  • el primero stat -c '%A %n' "$file"imprime los permisos y la ruta al archivo, por ejemplo-rw-rw-rw- /foo/bar
  • el segundo stat -c '%a' "$file"imprime los permisos en forma octal, por ejemplo666

La salida del primero statse agrega al nombre de archivo creado por el segundo statcon el sufijo .txt.

información relacionada