파일의 전체 경로가 필요한 작은 스크립트에 사용할 파일 목록이 포함된 배열 변수를 만들려고 합니다. 주위를 둘러보며 다음과 같은 것을 시도했습니다.
find /path/ -t f | grep randomString
이는 필요한 파일 중 일부만 반환하는 것으로 밝혀졌으므로 wc -l
이전 명령을 R 과 함께 사용하여 ls -R /path/ | grep randomString
다른 줄 수를 얻었습니다(100줄이 넘는 차이가 있으므로 ls - R out에서 디렉터리를 계산했습니다). . find
예상한 결과가 반환되지 않는 이유를 알고 싶습니다 . 어떤 아이디어가 있나요?
답변1
find
디렉토리 트리의 모든 파일을 나열합니다. ls -R
실제로는 더 적은 수의 파일을 나열합니다. 생략됩니다.파일 클릭- 꼭 ls -AR
포함시켜야 합니다.
필요한 파일을 찾지 못한 경우 다음과 같은 여러 가지 가능성이 있습니다.
- 출력에서 이를 놓쳤습니다. 검색 명령을 사용합니다(예 : less의 키
find … | less
사용 )./
의 출력은find
정렬되지 않습니다. - 이 파일은 실제로 당신이 생각하는 것과 다릅니다. 대소문자를 잘 모르는 경우 대소문자를 구분하지 않고 검색하세요.
- 당신이 찾고 있는 파일은 실제로 심볼릭 링크입니다.
find -xtype f
대신find -type f
에 기호 링크가 가리키는 파일을 기준으로 기호 링크를 분류하는 데 사용합니다 . - 이러한 파일은 디렉토리에 대한 심볼릭 링크 아래에 있습니다. 심볼릭 링크를 탐색하는 데 유용
find -L
하지만 주의하세요. 대규모 계층 구조의 최상위 디렉터리를 가리키는 심볼릭 링크가 있는 경우 많은 수의 파일을 검색할 수 있습니다.
ls -R
존재하지 않는 파일은 어떤 경우에도 찾을 수 없습니다 find
.
ls -R
합계 출력의 행 수를 쉽게 비교할 수 없습니다 find
.
ls -R
도트 파일을 생략find
하세요.ls -R
각 하위 디렉터리(루트 디렉터리 제외)에는find -type f
디렉터리 항목, 이전 줄과 해당 디렉터리 목록을 구분하는 빈 줄, 디렉터리 이름 뒤에 오는 헤더 줄 콜론 등 총 세 줄이 있습니다.
답변2
ls -R을 실행하면 디렉터리 이름 목록이 출력으로 표시됩니다.