옵션 사용법을 알고 싶습니다 find -maxdepth 0
.
다음과 같은 디렉토리 구조가 있습니다.
--> file1
--> parent
--> child1
--> file1
--> file2
--> child2
--> file1
--> file2
--> file1
이제 find
다음 명령을 실행합니다.
find ./parent -maxdepth 0 -name "file1"
find ./ -maxdepth 0 -name "file1"
find . -maxdepth 0 -name "file1"
find
위의 명령이 없으면파일 1반환됩니다.
매뉴얼 페이지에서 find
다음 정보를 볼 수 있습니다.
-maxlength 0은 명령줄 인수에만 테스트와 작업을 적용한다는 의미입니다.
옵션이 있는 몇 가지 예를 검색했지만 -maxdepth 0
적합한 예를 찾을 수 없었습니다.
내 find
버전은,
find --version
find (GNU findutils) 4.4.2
-maxdepth 0
누군가 나에게 어떤 사례 옵션이 유용할지에 대한 조언을 줄 수 있습니까 ?
편집하다
다음 명령을 실행하면파일 1두 번 나열되었습니다. 이것이 작동하도록 의도된 방식입니까?
find . file1 -maxdepth 1 -name "file1"
./file1
file1
답변1
file1
현재 디렉터리에 있다고 가정해 보겠습니다 . 그 다음에:
$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1
자, 무엇을 보자문서상태:
-maxdepth 0
명령줄 매개변수에는 테스트와 작업만 적용된다는 의미입니다.
위의 첫 번째 예에는 디렉토리만 있습니다..
명령줄에 나열됩니다. ~부터.
이름이 없으며 file1
출력에 아무 것도 나열되지 않습니다. 위의 두 번째 예에서는 둘 다.
및 file1
열은 명령줄에 있으며 file1
match 로 인해 -name "file1"
출력에 반환됩니다.
즉, -maxdepth 0
즉아니요디렉터리 또는 하위 디렉터리를 검색합니다. 대신, 일치하는 파일은 명령줄에 명시적으로 나열된 파일 중에서만 발견됩니다.
귀하의 예에서는 디렉토리만 명령줄에 나열되며 그 중 이름은 file1
. 따라서 출력이 없습니다.
일반적으로 많은 파일과 디렉터리의 이름을 명령줄에서 지정할 수 있습니다. 예를 들어, 여기서는 find
9개의 파일과 디렉터리가 포함된 명령줄에서 명령을 시도해 보겠습니다.
$ ls
d1 file1 file10 file2 file3 file4 file5 file6 file7
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 -maxdepth 0 -name "file1"
file1
겹치는 경로
고려하다:
$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1
find
. file
명령줄에 지정된 모든 경로는 경로가 동일한 파일로 연결되거나( 에서와 같이) 경로가 정확히 중복되는 경우에도 일치하는 항목을 찾습니다 file1 file1
.
답변2
디렉터리 대신 디렉터리에서 파일을 비재귀적으로 찾으려면 다음을 사용하세요.
find . -maxdepth 1 -type f -name "file1"
# ./file1
-maxdepth 0
검색할 수 없습니다. 인수로 제공한 파일/디렉토리 이름과만 일치하려고 시도합니다 find
.
예를 들어 위 명령문에서 maxdepth
값을 사용하면 일치하지 않는 콘텐츠를 0
일치시키려고 시도합니다 .file1
.
하지만,다음과 결합하는 *
대신 전달하면 bash가 현재 디렉터리의 파일 목록으로 대체되어 일치 항목이 반환됩니다..
-maxdepth 0
*
답변3
John1024가 좋은 예를 들었습니다.어떻게를 사용하므로 -maxdepth 0
정보만 추가합니다.언제그걸 써:
그렇다면 그 이유는 무엇입니까 -maxdepth 0
? 이름을 알면 직접 명령을 내릴 수 있습니다
ls file-*
글쎄, 아마도 당신이 찾고 있던 이름이 아닐 수도 있습니다.
예:
touch file-{1..3}
echo "1" > file-1
touch -d @0 file-2
find * -maxdepth 0 -name "file-*" \( -size 1k -o -mtime +10000 \) -ls
669266 12 -rw-rw-r-- 1 stefan stefan 2 Mai 4 20:57 file-1
669270 8 -rw-rw-r-- 1 stefan stefan 0 Jan 1 1970 file-2
저는 Schema-file-*이라는 파일 3개를 만들었습니다. 그런 다음 no에 몇 가지 내용을 추가합니다. 1. 번호가 매겨진 날짜를 재설정하세요. 2 그리고 번호를 남겨주세요. 3 그대로 둡니다.
지금은 1k(첫 번째) 또는 연령이 ~30년 이상인 파일에 대해 약 1000개의 파일을 검색하고 있습니다. 예를 들어 3개의 파일에만 있습니다.
그러나 find *는 현재 디렉토리에 있는 모든 파일을 검색하므로 "시작점"에 대한 다소 생소한 매뉴얼 페이지 용어는 단지 디렉토리에 대해서만 말하는 것이 아닙니다. 내 생각에는 find의 강력한 필터링 기능으로 인해 파일 위치를 알고 있는 파일($PWD)을 검색하기로 결정하게 되었지만 표준 쉘 도구를 사용하여 다른 속성을 쉽게 필터링할 수는 없습니다.