find 명령의 매개변수

find 명령의 매개변수

-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
.

관련 정보