Come eseguire un comando LS su output da un campo AWK
Domanda
Questo prende una directory come parametro:
#!/bin/bash
ls -l $1 |awk '$3!=$4{print $9}'
Ora ciò di cui ho bisogno è essere in grado di fare un altro ls -l
Sul solo file che si trovano dall'istruzione AWK.
Sì, sembra stupido e conosco altri 3 modi per farlo, ma non con Awk.
Soluzione
#!/bin/bash ls -l $1 | awk '$3!=$4{ system( "ls -l '$1'/" $9}'
Altri suggerimenti
Usa il comando di sistema AWK:
ls -l $1 |awk '$3!=$4{system("ls -l " $9)}'
Il comando da usare è xargs
.
man xargs
dovrebbe dare alcuni indizi.
Se è consentito regolare il primo ls -l
potresti provare a fare:
ls -ld "$1"/* |awk '$3!=$4{print $9}' | xargs ls -l
In questo caso ls
Prefisterà la directory. Ma non so se questo è un comportamento portatile.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow