Je veux imprimer tous les fichiers dans le répertoire que j'ai choisi. Je veux formater les fichiers à afficher sous les en-têtes de colonne. Mais quand j'essaie d'exécuter le code ci-dessous, je reçois des erreurs dans la console.Comment créer une boucle FOR dans BASH qui répertorie les fichiers dans un certain format
list_files()
{
FILES=/home/student/.junkdir/
echo "Listing files in Junk Directory"
format="%8s%10s%10s $-s\n"
printf "$format" "Filename" "Size(Bytes)" "Type"
printf "$format" "--------" "-----------" "----"
for listed_file in $FILES; do
file_name=$(du $listed_file | awk '{print $2}')
file_size=$(du $listed_file | awk '{print $1}')
file_type=$(file $listed_file | cut -d ' ' -f2-)
printf "$format" $file_name $file_size $file_type
done
}
C'est la sortie
Listing files in Junk Directory
FilenameSize(Bytes) Type hBs
------------------- ---- hBs
du: cannot access ‘/home/student/.junkdir/*’: No such file or directory
du: cannot access ‘/home/student/.junkdir/*’: No such file or directory
ERROR: cannot open hBs
`/home/student/.junkdir/*' (No such hBs
file ordirectory) hBs
Est-ce que vous modifiez le script lors de l'afficher? Les messages d'erreur m'amènent à penser que votre boucle for est en fait 'pour fichier_listé dans $ FILES/*' avec un caractère générique. –
Le répertoire "/home/student/.junkdir/" existe-t-il? –
Oui désolé, mon code original avait le caractère générique. Je pense avoir réalisé une partie de mon problème. –