Estou tentando criar um script bash que será capaz de executar um comando find para obter as permissões e o caminho completo de cada arquivo/diretório em uma árvore de diretórios e criar um arquivo para cada permissão exclusiva e imprimir cada caminho completo do arquivo para isso arquivo de permissões. Então, no futuro, eu poderia ler esses arquivos e usá-los para obter permissões como estavam quando executei o script.
Por exemplo:
drwxrwxrwx /home/user/testDirectory
-rwxrwxrwx /home/user/testDirectory/testFile
drwxr-xr-x /home/user/testDirectory/directory2
-rwxr-xr-x /home/user/testDirectory/directory2/test2
O acima criaria 2 arquivos (por exemplo, 777.txt
e 755.txt
) que teriam cada um 2 das linhas.
Estou lutando com a lógica para criar um arquivo para cada permissão exclusiva e depois enviar o caminho completo do arquivo.
O que tenho até agora (duvido que o array seja necessário, mas brinquei com a classificação do array com permissão, o que posso fazer com -k 1.2 no comando sort para ignorar o sinalizador d):
declare -a PERMS
i=0
while read line
do
PERMS[$i]="$line"
(( i++ ))
done < <( find /opt/sas94 -printf ""%M/" "%p/"\n")
Responder1
Experimente isto:
#!/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
- o primeiro
stat -c '%A %n' "$file"
imprime as permissões e o caminho para o arquivo, por exemplo-rw-rw-rw- /foo/bar
- o segundo
stat -c '%a' "$file"
imprime as permissões em formato octal, por exemplo666
A saída do primeiro stat
é anexada ao nome do arquivo criado pelo segundo stat
com sufixo .txt
.