/bin/find /root -name '*.csv'
반환 값을 사용하십시오 .
/root/small_devices.csv
/root/locating/located_201606291341.csv
/root/locating/located_201606301411.csv
/root/locating/g_cache.csv
/root/locating/located_201606291747.csv
/root/locating/located_201607031511.csv
/root/locating/located_201606291746.csv
/root/locating/located_201607031510.csv
/root/locating/located_201606301412.csv
/root/locating/located_201606301415.csv
/root/locating/located_201607031512.csv
실제로 아래의 모든 파일을 원하지 않으므로 /root/locating/
예상되는 출력은 입니다 /root/small_devices.csv
.
비재귀적으로 "찾기"를 사용하는 효율적인 방법이 있습니까?
필요한 경우 CentOS를 사용하겠습니다.
답변1
-maxdepth
이를 수행하려면 다음 옵션을 사용할 수 있습니다 .
/bin/find /root -maxdepth 1 -name '*.csv'
주석에서 언급했듯이 -mindepth 1
출력에서 시작점을 제외하기 위해 추가되었습니다. 에서 man find
:
-최대 깊이 수준
시작점 아래로 내려가는 대부분의 수준(음수가 아닌 정수) 디렉터리 수준입니다.
-maxdepth 0
이는 테스트와 작업이 시작점 자체에만 적용된다는 의미입니다.-최소 깊이 수준
레벨(음수가 아닌 정수)보다 낮은 레벨에서는 테스트나 연산을 적용하지 마십시오.
-mindepth 1
시작점을 제외한 모든 파일의 처리를 나타냅니다.
답변2
표준 find
:
find /root ! -path /root -prune -type f -name '*.csv'
이렇게 하면 검색에서 디렉터리 자체를 제외한 모든 디렉터리가 /root
제거(삭제) 되고 ./root
*.csv
GNU 사용 find
(및 기타 find
구현 이해 -maxdepth
):
find /root -maxdepth 1 -type f -name '*.csv'
경로를 자르려면 다음을 수행하십시오 /root/locating
.
find /root -path /root/locating -prune -o -type f -name '*.csv' -print
이제 /root
특정 하위 디렉터리를 제외한 모든 하위 디렉터리가 입력됩니다 /root/locating
.
-maxdepth
이 옵션을 사용하여 이 작업을 수행 할 수는 없습니다 .
답변3
-maxdepth
다음과 같은 -mindepth
기본 색상을 사용할 수 있습니다 .
find /root -maxdepth 1 -mindepth 1 -name '*.csv'
그리고FreeBSDfind
-depth 1
(macOS에서 사용) 대신 사용하고 싶을 수도 있지만 -maxdepth 1 -mindepth 1
이는 비효율적입니다.스티븐 차제라스 아래 댓글, " 1보다 큰 깊이의 디렉토리로 내려가는 것을 depth 1
멈추지 않습니다 . "find
-maxdepth 1
암소 비슷한 일종의 영양find
지원하지 않습니다.-depth n