Windows에서 find와 findstr 명령의 차이점은 무엇입니까?


24

Windows에서 findfindstr명령 의 차이점은 무엇 입니까?

둘 다 파일에서 텍스트를 검색하는 것 같습니다.

발견

C:\> find /?
Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         Displays all lines NOT containing the specified string.
  /C         Displays only the count of lines containing the string.
  /N         Displays line numbers with the displayed lines.
  /I         Ignores the case of characters when searching for the string.
  /OFF[LINE] Do not skip files with offline attribute set.
  "string"   Specifies the text string to find.
  [drive:][path]filename
             Specifies a file or files to search.

If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.

findstr

C:\> findstr /?
Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurences of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

For full information on FINDSTR regular expressions refer to the online Command
Reference.

1
아마도 진화에 관한 것입니다. 찾기는 DOS / UNIX 시절로 돌아가고 나중에 FINDSTR이 Windows에 추가되었습니다. 둘 다 아마도 진화했고 더 비슷해졌습니다.
KCotreau

@KCotreau의 타임 라인에 동의합니다. FIND는 고대이고 FINDSTR은 최신입니다. 나는 FIND가 FINDSTR과 같은 것으로 진화했는지 의심합니다. 오히려 FIND는 이전 버전과의 호환성을 유지하기 위해 (일반적으로 DOS와 마찬가지로) 잔인한 공룡으로 보존되었지만 FINDSTR은 적절한 기능 세트를 제공하기 위해 추가되었습니다 .
Scott

1
그런데 DOS / Windows FIND 명령은 Unix find명령 과 다릅니다 . 오히려, paradroid가 아래에서 제안하는 것처럼 FIND는 grep(또는 아마도 fgrep) 의 물을 뿌린 버전과 같습니다 .
Scott

도움말의 차이점이 보이지 않습니까?
phuclv

답변:


17

위에 표시된 것처럼 findstr정규식 지원을 추가하므로 더 비슷 grep합니다.


3
그러나 두 가지를 자주 사용하지 않으면 정확한 사용법과 차이점을 항상 명확하게 알 수는 없습니다. 따라서 당신이 경험 한 것과는 매우 다른 경험을했을 수 있기 때문에 그들의 인식은 다를 수 있습니다. 학습과 직업에있어 큰 문제의 일부는 Experience Gap이라고합니다. 긴 이야기.
crosenblum

5

Findstr에는 더 많은 검색 옵션이 있으며 정규식을 지원합니다. findstr이 파일 이름의 와일드 카드와 함께 작동하지 않는다는 것을 알았습니다.

아래 명령은 Quant_2013-10-25 _ *. log 패턴으로 여러 파일에서 검색 문자열의 모든 발생을 반환합니다.

find /I "nFCT255c9A" D:\Comp1\Logs\Quant_2013-10-25_*.log 

다음 명령은 아무것도 반환하지 않거나 단순히 작동하지 않습니다.

findstr nFCT255c9A D:\Comp1\Logs\Quantum_2013-10-25_*.log

find또한 몇 가지 제한 사항이 있습니다. 예를 들어, find/n""아무것도 일치하지 않으므로 줄 번호를 각 줄에 추가하는 데 사용할 수 없습니다 . 이를 위해서는 을 사용해야findstr 합니다.
Pacerier

1
에서 와일드 카드 관련 문제를 복제 할 수 없습니다 findstr. Microsoft Windows 7 Professional, 6.1.7601 Service Pack 1 Build 7601.
lordcheeto


1

findstr 은 몇 가지 유용한 기능 으로 find 기능을 확장합니다 . 주요 추가 사항 중 일부는 다음과 같습니다.

  1. findstr은 여러 검색 문자열을 지원합니다
  2. findstr은 검색 할 파일 이름 또는 디렉토리를 포함하는 파일을 입력으로 취할 수 있습니다.
  3. findstr은 정규 표현식을 지원합니다

큰 파일이나 많은 수의 파일에는이 기능이 적합하지 않습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.