„Znajdź | grep | awk ”kończy się niepowodzeniem


0

Skanuję wszystkie skrypty powłoki na moim serwerze i robię to za pomocą następującego polecenia:

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

Działa to dobrze, a oto przykładowe dane wyjściowe z tego:

/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

Teraz chcę popracować nad nazwami plików i spróbować użyć awk do tego:

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

Nie powoduje to jednak żadnych wyników. Próbowałem przekierować rury itp., Ale tutaj uderzyłem w ścianę.

Czy ktoś ma pojęcie o tym, co robię źle?


Co dzieje się z echo "/etc/network/if-up.d/mountnfs: text/x-shellscript" | awk -F: '{ print $1 }'?
Daniel Beck

@DanielBeck To działa. Może find nie pisze na standardowe wyjście? Ale potem nie potrafię wyjaśnić, w jaki sposób grep robi swoją część ...
Pies zjada świat kotów

Możesz przekierować wyjście błędu na standardowe wyjście. Twoje polecenie będzie wtedy wyglądać następująco:find / -type f -exec file --meta-type {} \; | grep "text/x-shellscript" 2>&1 | awk -F: '{ print $1 }'
Daniel Beck

@DanielBeck Nie, to nie pomaga. Próbowałem "find / -type f -exec file --mime-type {} \; | grep" text / x-shellscript "2> & 1 1> this_file_should_not_be_empty", ale wygląda na to, że grep wysyła się donikąd! Nawet jeśli tekst jest wyświetlany na monitorze bez przekierowania potoku.
Pies zjada świat kotów

Możesz zawęzić miejsce występowania problemu i pozbyć się jednego z tych tagów w pytaniu, eliminując bezużyteczne korzystanie zgrep niego.
JdeBP

Odpowiedzi:


2

Spróbuj tego:

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

Dzięki, to działa. Ale wciąż jestem ciekawy, dlaczego awk tego nie robi
Pies zjada świat kotów

Twoje polecenie awk działa tutaj dobrze, nie ma w tym nic złego. Jeśli osadzasz ten potok w innym poleceniu (backticks itp.), Jedyną różnicą, o której mogę pomyśleć, są pojedyncze cudzysłowy używane w poleceniu awk.
haimg
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.