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 apermissione adicionamos abc. - Finalmente
bcfaz 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.