find -maxlength 0은 출력을 반환하지 않습니다.

find -maxlength 0은 출력을 반환하지 않습니다.

옵션 사용법을 알고 싶습니다 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열은 명령줄에 있으며 file1match 로 인해 -name "file1"출력에 반환됩니다.

즉, -maxdepth 0아니요디렉터리 또는 하위 디렉터리를 검색합니다. 대신, 일치하는 파일은 명령줄에 명시적으로 나열된 파일 중에서만 발견됩니다.

귀하의 예에서는 디렉토리만 명령줄에 나열되며 그 중 이름은 file1. 따라서 출력이 없습니다.

일반적으로 많은 파일과 디렉터리의 이름을 명령줄에서 지정할 수 있습니다. 예를 들어, 여기서는 find9개의 파일과 디렉터리가 포함된 명령줄에서 명령을 시도해 보겠습니다.

$ 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)을 검색하기로 결정하게 되었지만 표준 쉘 도구를 사용하여 다른 속성을 쉽게 필터링할 수는 없습니다.

관련 정보