이 명령의 출력 Linux

이 명령의 출력 Linux

이 명령의 출력에 대한 아이디어가 있는 사람이 있나요? Google에서 이에 대해 많이 검색했지만 유용한 정보를 찾을 수 없습니다.

find . -type f -exec grep -H PATH {} \;

미리 감사드립니다

답변1

명령

find . -type f -exec grep -H PATH {} \;

-type f현재 디렉토리( .) 이하 에서 모든 일반 파일( )을 찾고 , 이러한 각 파일에 대해 현재 디렉토리에 상대적인 파일의 전체 경로 이름으로 대체되어 grep -H PATH {}실행 됩니다.{}

-Hto 옵션은 비표준 grep이지만 자주 구현되며 일치하는 각 줄 앞에 해당 줄이 있는 파일의 경로 이름이 붙도록 합니다. 대신 명령을 변경하여 grep PATH /dev/null {}항상 grep파일의 경로 이름을 출력하도록 할 수 있습니다. 일치하는 행을 포함하는 것입니다(표준은 grep명령행에 최소 두 개의 파일이 제공될 때 이를 수행합니다).

와 함께 사용되는 패턴은 grep문자열입니다 PATH.

요약하자면, 이 명령은 현재 디렉터리나 그 아래에 있는 모든 일반 파일에서 하위 문자열을 언급하는 모든 줄을 찾아서 출력합니다 PATH. 각 줄 앞에는 해당 줄이 포함된 파일의 경로 이름이 붙습니다.

내 개인 홈 디렉토리에서 이것을 실행할 때 얻는 출력의 일부는 다음과 같습니다.

./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_NM:FILEPATH=/usr/bin/nm
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_STRIP:FILEPATH=/usr/bin/strip

grep각 파일에 대해 한 번이 아니라 일괄적으로 가능한 한 많은 파일을 한 번에 실행 함으로써 명령을 더 효율적으로 만들 수 있습니다 .

find . -type f -exec grep -F -e PATH /dev/null {} +

또한 문자열을 다음과 같이 처리하도록 grep추가하여 명령을 약간 변경할 수도 있습니다.-FPATH정규 표현식이 아닌 이 -e옵션은 다음 인수가 패턴임을 나타내는 데 사용됩니다(예를 들어 패턴이 나중에 대시로 시작하는 것으로 변경되는 경우 유용합니다).

각각에 대해 유틸리티를 실행하는 대신 발견된 경로 이름을 일괄 처리로 수집하도록 하는 것은 조건자의 인수 끝에서 에서 \;로 변경된 것입니다 .+-exec

관련 정보