Produisez une sortie ls-l plus personnalisée avec awk

J’essaie d’écrire un script awk pour produire une sortie personnalisée à partir de ls -l quelque chose comme ceci:


File xxx.txt has size of 100 blocks, was last modified on July 3 2013, is owned by Kohn. The user has read permission, has write permission and has execute permission. Dir abc has size of 200 blocks, was last modified on July 1 2013, is owned by Kohn. The user has read permission, does not have write permission and has execute permission. ... 

Je trouve que la tâche la plus difficile consiste à parsingr la première colonne $ 1 pour obtenir la permission et le fichier / répertoire. Pouvez-vous me donner un indice sur la façon de résoudre ce problème?

Cordialement, Kohn

Ne pas parsingr ls utiliser stat

 #!/bin/bash myls() { local filetype=$(stat -c "%F" "$1") local format="${filetype^} %n has size of %b blocks, " format+="was last modified on $(date -d "@$(stat -c "%Y" "$1")" "+%B %e, %Y"), " format+="is owned by %U. " format+="$(permissions "$1")" stat -c "$format" "$1" } permissions() { local user_perms=$(stat -c "%A" "$1") local ssortingng="The user " ssortingng+="$(has ${user_perms:1:1} r) read permission, " ssortingng+="$(has ${user_perms:2:1} w) write permission, " ssortingng+="$(has ${user_perms:3:1} x) execute permission." echo "$ssortingng" } has() { [[ $1 == $2 ]] && echo "has" || echo "does not have"; } for file; do myls "$file" done