.png)
Eu quero uma saída como esta: name
size
e hash
:
myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646
Pois name
e size
só eu tenho
ll -h | awk '{print $9,$10,$11,$12,$5}'
Mas como posso obter hash
cada arquivo? Tentei:
ll -h | awk '{print $9,$10,$11,$12,$5}' | md5sum
Mas recebo apenas um hash.
Responder1
Você não deve analisar ls, em vez disso use isto:
for f in * .*; do
[ -f "$f" ] && \
printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
- O
for
loop é executado em todos os arquivos e diretórios no diretório atual.[ -f "$f" ]
verifica se é um arquivo normalprintf "%s %s %s\n"
imprime os argumentos no formato desejado."$f"
o primeiro argumento é o nome do arquivodu -h -- "$f" | cut -f1
o segundo é o tamanho (legível por humanos), mas não o nome do arquivo,cut
corta todos, exceto o primeiro campomd5sum -- "$f" | cut -d' ' -f1
a terceira é a soma MD5, mas sem o nome do arquivo.