Para um único arquivo:
stat -c "%a" filename.txt | xargs -I PERM echo "obase=2; ibase=8; PERM" | bc
E como um script mais claro para mais de um arquivo:
#!/bin/bash
for file in *
do
perm=$(stat -c "%a" "$file")
bin=$(echo "obase=2; ibase=8; $perm" | bc)
echo "$bin $file"
done
a saída:
110110100 baz
110110100 foo
110110101 bar
Notas
- Primeiro, fazemos o loop em todos os arquivos e diretórios usando
for file in *
. - Com
stat -c "%a
, reunimos a permissão do arquivo em octal e, em seguida, - Usando
echo
, adicionamos outros detalhes necessários apermission
e adicionamos abc
. - Finalmente
bc
faz a conversão e depois imprimimos o resultado e o nome do arquivo. - obase = 2; significa saída deve estar em binário, ibase = 8 significa que nossa entrada é em octal e $ perm é a permissão de arquivo em octal como 664.