이 명령의 결과를 아시는 분 계시나요? 검색을 많이 했지만 유용한 정보를 찾을 수 없습니다.
find . -type f -exec grep -H PATH {} \;
미리 감사드립니다
답변1
주문하다
find . -type f -exec grep -H PATH {} \;
-type f
현재 디렉터리( ) 또는 다음 디렉터리( ) .
에서 모든 일반 파일을 찾고 , 이러한 각 파일에 대해 실행 grep -H PATH {}
시 {}
현재 디렉터리를 기준으로 하는 파일의 전체 경로 이름을 바꿉니다.
이 옵션은 비표준이지만 자주 구현되며 일치하는 각 줄 앞에 해당 줄이 있는 파일의 경로 이름이 붙도록 합니다 -H
. 명령을 다음과 같이 변경하여 출력 파일의 경로 이름에 항상 일치하는 행이 포함되도록 할 수 있습니다( 표준 grep
에서는 명령줄에 두 개 이상의 파일이 제공될 때 이 작업을 수행합니다).grep PATH /dev/null {}
grep
grep
와 함께 사용되는 패턴 grep
은 string 입니다 PATH
.
요약하자면, 이 명령은 현재 디렉토리 또는 where 부분 문자열을 언급하는 다음 디렉토리의 모든 일반 파일에서 모든 행을 찾아서 출력합니다 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
추가 했습니다.-F
PATH
끈정규 표현식이 아닌 이 -e
옵션은 다음 인수가 패턴임을 나타내는 데에만 사용됩니다(예를 들어 나중에 패턴을 대시로 시작하는 패턴으로 변경하는 경우 유용함).
조건자 인수 끝의 에서 로 변경하면 \;
각 경로 이름에 대해 유틸리티를 실행하는 대신 발견된 경로 이름을 일괄 처리로 수집하게 됩니다.+
-exec