Je voudrais utiliser AWK pour supprimer les 8 premières colonnes de la sortie suivante :
ls -l
lrwxrwxrwx 1 user user 23 jul 27 00:04 file1.pdf
-rw-rw-r-- 1 user user 107 may 8 13:59 file 2 with spaces.mp3
lrwxrwxrwx 1 user user 11 jul 24 19:43 file3-with-hyphens.txt
lrwxrwxrwx 1 user user 11 jul 24 19:43 and_another_file4_with_underscores.md
-rw-rw-r-- 1 user user 107 may 8 13:59 file 5 with way more spaces than the rest.mp3
et envoyer le résultat dans un fichier texte. Je peux le faire manuellement dans vim avec visual block select, mais je préférerais avoir un script pour le faire automatiquement.
En regardant autour de moi, j'ai pu trouver este où, en modifiant les parties pertinentes du 9ème exemple et en transférant la sortie vers elle-même autant de fois que nécessaire, j'ai pu obtenir le résultat souhaité, mais je pense qu'il doit y avoir une meilleure façon (plus élégante et/ou compacte) de le faire, mais je n'ai pas été en mesure de la trouver ou d'inventer la mienne.
Mon code final est le suivant :
awk '{for(i=1;i<=NF;i++)if(i!=x)f=f?f FS $i:$i;print f;f=""}' x=1 ~/file_folder_content.txt | awk '{for(i=1;i<=NF;i++)if(i!=x)f=f?f FS $i:$i;print f;f=""}' x=1 | ... | awk '{for(i=1;i<=NF;i++)if(i!=x)f=f?f FS $i:$i;print f;f=""}' x=1 >> ~/file_folder_content.txt
Note 1 : Je m'attends à ce que la sortie réelle de l'appareil ls
pour être beaucoup plus large que cela.
Note 2 : J'ai essayé d'imprimer le 9ème champ, mais comme certains noms de fichiers contiennent des espaces, cela n'imprime que le premier mot du nom de fichier.