이들찾기그리고 의 차이점은 무엇인가요? 그리고 발견했습니다.

이들찾기그리고 의 차이점은 무엇인가요? 그리고 발견했습니다.

차이점이 뭐야:

find .

그리고

find . -print

실제로는 무엇을 합니까 -print?

$ find .
.
./hello.txt
./hello
./hello/txt
./hello/hello2
./hello/hello2/hello3
./hello/hello2/hello3/txt
./hello/hello2/txt
$ find . -print
.
./hello.txt
./hello
./hello/txt
./hello/hello2
./hello/hello2/hello3
./hello/hello2/hello3/txt
./hello/hello2/txt

답변1

~에서findutils find맨페이지:

표현이 주어지지 않으면 표현은-print사용(그러나 아마도 사용을 고려해야 할 것입니다.-print0어쨌든 반대로).

( -printfind표현하다.)

이것POSIX 문서이것을 확인했습니다:

그렇지 않다면표현하다존재하다,-인쇄표현으로 사용해야 합니다.

따라서 find .완전히 동일합니다 find . -print. 첫 번째 항목에는 표현이 없으므로 -print내부적으로 추가됩니다.

-print그 의미는 맨페이지에 자세히 설명되어 있습니다.

-print

True이면 표준 출력에 전체 파일 이름을 인쇄하고 그 뒤에 개행 문자가 옵니다. find의 출력을 다른 프로그램으로 파이핑하고 있고 검색 중인 파일에 개행 문자가 포함될 가능성이 높다면 다음을 사용하는 것을 진지하게 고려해야 합니다.-print0대신 옵션-print. 파일 이름의 특이한 문자를 처리하는 방법에 대한 자세한 내용은 예외 파일 이름 섹션을 참조하세요.

답변2

-print기본값입니다행동. 일부 find술어가 고려됩니다.행동상대적인필터또는상황. 예를 들어, -type f작업이 아닙니다. -exec조건으로 사용될 수도 있지만 작업입니다.

작업에는 -print, -exec및 가 포함됩니다 -ok. 일부 구현에는 , , , ... find와 같은 다른 비표준 작업 조건자가 있습니다 .-print0-printf-execdir-okdir-ls

find files <some-predicates>

그들 중 아무도 없습니다<some-predicates>포함하다행동다음과 동일:

find files \( <some-predicates> \) -print

(위의 괄호에 주목하십시오. -o이는 일부 연산자가 있는 경우 중요합니다).

-print확실하지 않은 경우 명시적으로 사용하는 것이 좋습니다 (또는 출력을 후처리할 수 있도록 사용 가능한 -exec printf '%s\0' {} +경우 ).-print0

기본 -print작업은 POSIX에 의해 지정됩니다.일부 이전 find구현에서는 명시적 요구 사항이 필요합니다.-print, 그러나 이것들은 오늘날 야생에서는 일반적으로 발견되지 않습니다.

또한 일부 find구현에서는 생략을 허용하며 files, 이 경우 기본적으로 현재 디렉터리를 검색합니다. 즉, 그들에게는

find
find -print

동등하다

find .
find . -print

그러나 이는 표준이 아니므로 피하는 것이 가장 좋습니다.

보다 상세하고 유용한 규모에서 일부 구현에서는 다음과 같이 파일 경로를 옵션 find에 대한 인수로 전달할 수도 있습니다 .-f

find -f "$file1" -f "$file2" -print

find이는 임의의 파일 경로를 에 전달하는 것을 허용하는 유일한 것입니다 find. 다른 구현에서는 !또는 -print... 과 같은 파일 경로를 허용할 수 없으므로 find "$file" -print(심지어 find -- "$file" -print) 이는 조건자(또는 첫 번째 경우 옵션)의 이름이 아닌 것으로 간주됩니다 $file.find

불행하게도 이것은 표준도 아니고 이식성도 없습니다.

답변3

둘 다 동일하며 둘 다 현재 디렉터리에서 전체 디렉터리 계층 구조를 작성합니다.

~에서POSIX 조회 문서:

다음 명령은 동일합니다.

찾다.

찾다. -인쇄

답변4

수년 동안 find 명령에는 기본 동작이 없었습니다. 일반적인 실수는 find 명령에 -print 옵션을 추가하는 것을 잊어버리는 것입니다. 나는 지금도 습관적으로 타자를 치고 있다.

그러나 어떤 시점에서는 기본 작업으로 추가되었으므로 이제 find .find . -print동일합니다.

관련 정보