“찾기 | grep | awk”는 비참하게 실패한다


0

서버에서 모든 셸 스크립트를 검색하고 있으며 다음 명령 으로이 작업을 수행합니다.

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

이것은 잘 작동하며 다음은 샘플 출력입니다.

/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

이제 파일 이름으로 작업하고 이것을 위해 awk를 사용하려고합니다.

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

그러나 이것은 출력을 생성하지 않습니다. 나는 파이프 등을 리디렉션하려고 시도했지만 여기 벽에 부딪쳤다.

아무도 내가 뭘 잘못하고 있는지 알고 있습니까?


어떻게됩니까 echo "/etc/network/if-up.d/mountnfs: text/x-shellscript" | awk -F: '{ print $1 }'?
다니엘 벡

@DanielBeck 작동합니다. 아마도 find가 stdout에 쓰지 않습니까? 하지만 난 ... 그 부분을 수행하는 방법을 그렙 설명 할 수
개는 고양이 세계 먹고

오류 출력을 표준 출력으로 리디렉션 할 수 있습니다. 그러면 여러분의 명령은 다음과 같습니다 :find / -type f -exec file --meta-type {} \; | grep "text/x-shellscript" 2>&1 | awk -F: '{ print $1 }'
Daniel Beck

@DanielBeck 아니오, 도움이되지 않습니다. "find / -type f -exec 파일 --mime-type {} \; | grep"text / x-shellscript "2> & 1 1> this_file_should_not_be_empty"를 시도했지만 grep이 아무데도 출력되지 않는 것 같습니다! 파이프 리디렉션없이 텍스트가 모니터에 표시되는 경우에도 마찬가지입니다.
개 고양이 세계 먹고

쓸데없는 사용을grep 제거하여 문제의 위치를 ​​좁히고 문제의 태그 중 하나를 제거 할 수 있습니다 .
JdeBP

답변:


2

이 시도:

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

고마워, 이것은 작동합니다. AWK하지 않는 이유하지만 난 여전히 궁금
개는 고양이 세계 먹고

당신의 awk 명령은 여기서 잘 작동하지만 아무런 문제가 없습니다. 이 파이프를 다른 명령 (백틱 등)에 포함시키는 경우 내가 생각할 수있는 유일한 차이점은 awk 명령에 사용하는 작은 따옴표입니다.
haimg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.