비어 있지 않은 출력을 파일로 보내기

비어 있지 않은 출력을 파일로 보내기

find 명령의 비어 있지 않은 출력만 파일에 저장하고 싶습니다. 출력 파일이 없으면 생성되지 않아야 합니다.

$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file

어떻게 하나요?

답변1

유틸리티ifne패키지에서moreutils당신이 원하는 것을 달성해야합니다 :

$ find . -name 'bb' | ifne tee file

매뉴얼 페이지에서:

설명

만약에표준 입력이 비어 있지 않은 경우에만 다음 명령을 실행합니다.

답변2

-exec파일이 발견된 경우에만 실행되는 옵션을 사용하십시오 .

find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +

설명:

  • printf "%s\n" "$@"후행 개행 문자로 각 인수를 인쇄합니다.
  • sh의 두 번째 인수는 sh -c에 할당됩니다 $0.
  • {} +인수 로서 -exec이는 "선택한 모든 파일"을 나타냅니다. , 등에 sh -c할당합니다 $1.$2

관련 정보