Comment faire une commande ls sur la sortie d'un champ awk
Question
Ceci prend un répertoire comme paramètre:
#!/bin/bash
ls -l $1 |awk '$3!=$4{print $9}'
Maintenant, ce dont j'ai besoin, c'est de pouvoir faire UN AUTRE ls -l
sur les seuls fichiers trouvés dans l'instruction awk.
Oui, cela semble stupide, et je connais trois autres façons de le faire, mais pas avec awk.
La solution
#!/bin/bash ls -l $1 | awk '$3!=$4{ system( "ls -l '$1'/" $9}'
Autres conseils
Utilisez la commande système awk:
ls -l $1 |awk '$3!=$4{system("ls -l " $9)}'
La commande à utiliser est xargs
.
man xargs
devrait donner quelques indices.
S'il est permis d'ajuster le premier code générique, vous pouvez essayer de faire:
ls -ld "$1"/* |awk '$3!=$4{print $9}' | xargs ls -l
Dans ce cas, ls -l
préfixera le répertoire.Mais je ne sais pas s'il s'agit d'un comportement portable.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow