Bash Script para criar um arquivo para cada permissão exclusiva em um comando de listagem/localização e imprimir cada instância de caminho de diretório/arquivo dessa permissão

Bash Script para criar um arquivo para cada permissão exclusiva em um comando de listagem/localização e imprimir cada instância de caminho de diretório/arquivo dessa permissão

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.txte 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 statcom sufixo .txt.

informação relacionada