현재 디렉터리의 파일에서 문자열을 검색하고 중복된 항목은 생략합니다.

현재 디렉터리의 파일에서 문자열을 검색하고 중복된 항목은 생략합니다.

중복된 줄을 반복하지 않고 특정 문자열과 일치하는 줄을 인쇄하는 줄을 작성한다고 가정합니다. 현재 디렉터리의 파일에서 이 문자열을 검색하고 싶습니다.

grep mystring ***What to put here?** | sort | uniq

현재 dir 파일을 모두 검색하려면 어떻게 해야 합니까?

답변1

find . ! -name . -prune -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

또는:

find . ! -name . -prune -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

GNU를 사용하면 grep:

LC_ALL=C grep -hr --exclude-dir='?*' mystring | LC_ALL=C sort -u

또는 zshGNU를 사용하면 다음과 같습니다 grep.

grep -h mystring ./*(D.) | LC_ALL=C sort -u

하위 디렉터리의 파일도 검색하려면 다음을 반복적으로 수행하세요.

find . -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

또는:

find . -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

GNU를 사용하면 grep:

grep -hr mystring | LC_ALL=C sort -u

이러한 모든 솔루션은 숨겨진 파일(및 숨겨진 디렉터리 내부의 파일) 내부도 검색하지만 비정규 파일은 검색하지 않으며 심볼릭 링크를 따르지 않습니다( grep와 함께 이전 버전의 GNU를 사용하지 않는 한 -r).

관련 정보