단어가 포함된 파일을 표시하기 위해 find 명령을 사용하는 방법은 무엇입니까?

단어가 포함된 파일을 표시하기 위해 find 명령을 사용하는 방법은 무엇입니까?

find 명령을 사용하고 find 명령이 실제로 찾은 파일과 해당 경로만 콘솔에 출력하고 싶습니다. 지금 해당 명령을 사용하면 확인한 모든 파일도 표시되기 때문입니다.

내가 사용하는 명령은 다음과 같습니다

find idle /* > find_idle.txt

검색한 내용을 모두 출력하는 것 같습니다. "유휴"가 있는 파일에 대해서는 조회수가 표시되지 않습니다. 저는 리눅스 초보자입니다.

답변1

다음을 실행해 보세요.

grep -r idle /

이는 작동하지만 문제가 발생할 수 있습니다. /proc예를 들어, 가상 파일 시스템에서 파일을 검색하고 싶지 않습니다. 멈추거나, 시간이 오래 걸리거나, 관심 없는 특별한 유형의 파일에 대한 결과만 포함될 수 있습니다.

아래에서 검색해야 하는 경우 /다음과 같은 정보가 필요합니다.

find / -xdev -type f -exec grep -H idle '{}' +
  • /*최상위 "숨겨진" 파일 및 디렉터리는 건너뜁니다. 그렇게 구체적인 목표가 없다면 *끝까지 남기지 마세요.

  • find텍스트 파일에서 문자열을 검색하지 마세요. 그것은 많은 옵션을 가지고 있습니다. find / -name idle이름이 지정된 파일을 찾아 idle전체 경로를 인쇄합니다. find path-a path-b경로 a와 경로 b에 존재할 것으로 예상되는 모든 파일을 나열합니다.

    $ find path-a path-b
    find: ‘path-a’: No such file or directory
    find: ‘path-b’: No such file or directory
    
  • find -xdev다른 파일 시스템으로 이동하지 마십시오 /proc. 예를 들어 /home다른 파일 시스템인 경우 이를 변경하는 것이 좋습니다 find / /home -xdev ....

  • find -type f디렉터리 및 기타 특수 파일을 필터링합니다.

  • find -exec이 파일 이름을 사용하여 다른 프로그램을 실행할 수 있습니다. +파일 이름 배치를 한 번에 전달하려면 특별히 사용하십시오 . 이는 더 효율적입니다.

답변2

Windows 명령줄은 Unix 명령줄과 완전히 다릅니다. Windows 명령줄 유틸리티를 아는 것은 Unix에서는 도움이 되지 않으며 그 반대의 경우도 마찬가지입니다. 반면, Linux와 macOS 등 Unix 변종에는 공통점이 많으며, 한 변종을 이해하면 다른 변종도 이해하는 데 도움이 됩니다.

우연히도 Windows와 Linux에는 모두 find. 하지만 그들은 완전히 다른 일을 합니다. find파일 내용을 검색하기 위해 명령을 호출할 것이라고 아무도 예상하지 못했기 때문에 처음에는 귀하의 질문이 여기에서 잘 받아들여지지 않았습니다. 유닉스find이 유틸리티는 이름, 위치, 수정 시간 등 메타데이터를 기반으로 파일을 검색합니다. 파일 내용은 볼 수 없습니다.

파일 내용을 검색하는 Unix 명령은 다음과 같습니다.grep. 주요 초점은 파일 내부를 검색하는 것이지만 최신 버전에서는 grep자동으로 디렉터리를 탐색하고 그 안에 있는 모든 파일을 검색하도록 지시할 수 있습니다. idle현재 디렉터리에서 이 문자열이 포함된 파일을 찾으 려면 다음 을 수행하세요.

grep idle *

*문자는 쉘에 의해 현재 디렉토리의 파일 목록으로 확장되는 와일드카드 패턴입니다. 이는 Windows에서 기본적으로(정확하지는 않지만) 동일한 방식으로 작동하는 몇 안 되는 기능 중 하나입니다. *.*이름에 이 있는 파일을 제외하는 습관을 버리십시오 .(Windows와 달리 이 모드에는 역사적인 이유로 특별한 마법이 있습니다). *반드시 제외파일 클릭그러나 그것은 또 다른 이야기입니다. 이 명령은 이 작업을 수행하기 위해 하위 디렉터리의 파일을 검색하지 않습니다.

grep -r idle .

grep여기서는 파일 나열이 자체적으로 수행되므로 셸에 의존하지 않습니다 .

전체 시스템에서 파일을 찾으려면 다음을 사용할 수 있습니다.

grep -r idle /

그러나 이는 많은 시스템 파일을 검색하므로 아마도 이를 원하지 않을 것입니다. 바라보다sourcejedi의 답변은 매우 좋습니다이 주제에 대해.

"idle"이라는 단어만 검색하고 "idle" 또는 "side"와 같은 단어의 하위 문자열인 경우는 검색하지 않으려면 다음 옵션을 전달 -w하세요 grep.

grep -w idle *

어떤 경우에도 "유휴"( Idle, IDLE, , ...)를 검색하려면 iDle다음을 전달하세요 -i.

grep -i idle *

일반적으로 말하면, 어떤 작업을 수행하기 위한 명령을 찾고 있다면 웹 검색이 가장 좋은 친구입니다. 이를 수행하는 몇 가지 방법이 있습니다.시스템의 명령에 대한 문서 검색, 그러나 일반적으로 효율성이 떨어집니다. 찾고 있는 것이 무엇인지에 대한 아이디어가 있어야 합니다. 명령 이름을 알고 나면 해당 명령을 사용하여 또는 man와 같은 해당 문서를 찾을 수 있습니다 . 나는 독서를 추천한다man grepman find명령 사용 방법을 배우기 위해 매뉴얼 페이지를 사용하는 방법은 무엇입니까?.매뉴얼 페이지일반적으로 수행 중인 작업에 대한 일반적인 아이디어는 있지만 세부 사항을 잊어버렸다고 가정하고 무미건조한 요약이므로 주저하지 말고 다른 리소스를 참조하세요.

관련 정보