-print
동일한 결과를 생성하므로 명령에서 및 매개변수를 사용할 -depth
때의 차이점은 무엇입니까 ?find
/home/pkaramol/Desktop/testdir
$ find .
.
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
/home/pkaramol/Desktop/testdir
$ find . -depth
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
.
/home/pkaramol/Desktop/testdir
$ find . -depth -print
./testfile3.txt
./testfile1.txt
./testfile4.txt
./testdir1
./testfile2.txt
./testdir2
.
답변1
-print
현재 경로 이름이 표준 출력으로 인쇄되는지 확인합니다. 특정 플래그는 경로 이름의 기본 인쇄를 끕니다( -exec
예:).
-depth
파일 계층 구조의 깊이 우선 순회가 발생하므로 하위 디렉터리가 없는 디렉터리의 경로 이름이 먼저 처리됩니다(하향식보다는 상향식). 귀하의 예에서는 하위 디렉터리가 없는 디렉터리에서 작업할 때 거의 차이가 없지만 .
보고되는 내용 에 유의하세요.뒤쪽에사용되는 경우 다른 경로 이름 -depth
( .
이는 검색할 최상위 디렉토리이므로 해당 경로 이름은 마지막으로 처리되고 -depth
먼저 사용되지 않기 때문입니다 -depth
).
-depth
이는 디렉터리를 삭제하려는 경우 유용합니다. find
디렉터리가 없으면 삭제된 디렉터리에 액세스하려고 할 때 오류가 발생하기 때문입니다.
Scott이 아래 의견에서 지적했듯이정말필요할 -depth
때이름 바꾸기디렉터리의 경우에도 마찬가지입니다. 그렇지 않으면 이름을 바꾸는 동안 디렉터리 구조를 탐색하지 못할 수도 있습니다.
이 플래그는 -delete
기본적으로 켜져 있습니다.-depth
예: 현재 디렉터리 아래에서 이름이 일치하는 모든 디렉터리 *deleteme
(예: folder-deleteme
)를 삭제하고 성공적으로 삭제된 디렉터리의 경로를 인쇄합니다.
find . -depth -type d -name '*deleteme' -exec rm -rf {} ';' -print
다음과 같은 디렉토리 구조를 보면,
$ tree
.
`-- folder-deleteme
`-- another-deleteme
`-- evenmore-deleteme
3 directories, 0 file
위 find
명령 을 실행하세요.아니요 -depth
이어질 것이다
$ find . -type d -name '*deleteme' -exec rm -rf {} ';' -print
./folder-deleteme
find: ./folder-deleteme: No such file or directory
find
최상위 디렉토리를 삭제 하고 folder-deleteme
해당 경로를 인쇄한 다음 해당 디렉토리로 이동하여 삭제할 다른 디렉토리를 찾으십시오.
반품:
$ find .
.
./folder-deleteme
./folder-deleteme/another-deleteme
./folder-deleteme/another-deleteme/evenmore-deleteme
$ find . -depth
./folder-deleteme/another-deleteme/evenmore-deleteme
./folder-deleteme/another-deleteme
./folder-deleteme
.