“Trova | grep | awk "fallisce miseramente


0

Sto cercando tutti gli script di shell sul mio server e lo sto facendo con il seguente comando:

find / -type f -exec file --mime-type {} \; | grep "text/x-shellscript"

Funziona bene ed ecco un esempio di questo:

/lib/udev/hwclock-set: text/x-shellscript
/lib/init/bootclean.sh: text/x-shellscript
/etc/network/if-up.d/openssh-server: text/x-shellscript
/etc/network/if-up.d/mountnfs: text/x-shellscript

Ora, voglio lavorare sui nomi dei file e provare a usare awk per questo:

find / -type f -exec file --mime-type {} \; | grep "text/x-shellscript" | awk -F: '{ print $1 }'

Questo, tuttavia, non produce alcun output. Ho provato a reindirizzare i tubi, ecc., Ma qui ho colpito il muro.

Qualcuno ha un'idea di quello che sto facendo di sbagliato?


Cosa succede con echo "/etc/network/if-up.d/mountnfs: text/x-shellscript" | awk -F: '{ print $1 }'?
Daniel Beck

@DanielBeck Funziona. Forse trova non scrive a stdout? Ma poi non riesco a spiegare come grep possa fare la sua parte ...
cane mangia il mondo dei gatti il

È possibile reindirizzare l'output dell'errore all'output standard. Il tuo comando apparirà così:find / -type f -exec file --meta-type {} \; | grep "text/x-shellscript" 2>&1 | awk -F: '{ print $1 }'
Daniel Beck

@DanielBeck No, non aiuta. Ho provato "trova / -type f -exec file --mime-type {} \; | grep" text / x-shellscript "2> & 1 1> this_file_should_not_be_empty", ma sembra che grep non stia andando da nessuna parte! Anche se il testo viene visualizzato sul monitor senza reindirizzamento del tubo.
cane mangia il mondo dei gatti il

È possibile restringere il locus del problema e sbarazzarsi di uno di quei tag sulla domanda, eliminando l' uso inutile digrep lì.
JdeBP,

Risposte:


2

Prova questo:

  find / -type f -exec file --meta-type {} \; | grep "text/x-shellscript" | cut -d: -f 1

Grazie, funziona. Ma sono ancora curioso di sapere perché Awk non lo fa
cane mangia il mondo dei gatti il

Il tuo comando awk funziona bene qui, non c'è niente di sbagliato in esso. Se stai incorporando questa pipe in qualche altro comando (backtick, ecc.), L'unica differenza che mi viene in mente è le singole virgolette che usi nel comando awk.
arrivo il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.