답변:
가장 쉬운 방법은을 추가 -mindepth 1
하는 것입니다 . 첫 번째 깊이 계층을 건너 뛰고 부모 디렉토리를 제외합니다.
또한, 추가로 필요하지 않습니다 -exec
에 전화를 rm
할 수 있습니다, 단지 delete
직접 폴더 들이있는 거 비어있는 경우.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
비어 있지 않은 경우 :
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
게으른 경우 와일드 카드를 확장 할 수도 있습니다. 이후 *
(기본적으로 현재 디렉토리를 포함하지 않는 하지 않는 dotglob
설정 ), 당신은 또한 할 수 :
find /var/www/html/content/processing/* -type d -mtime +1 -delete
그러나 dotglob
옵션 으로 인해 숨겨진 폴더도 다시 포함되지 않습니다 .
문제는 find가 다른 디렉토리와 함께 현재 디렉토리 (.)를 리턴하므로 처리 디렉토리와 서브 디렉토리를 삭제한다는 것입니다. 이 문제를 해결하는 빠른 방법은 옵션을 추가하는 것입니다.
-not -name .
find는 현재 디렉토리의 출력을 멈추고, 그 결과 삭제되지 않습니다.
처리 디렉토리 내에서 명령을 실행하는 경우 작동하므로 절대 경로를 사용하고 있다는 사실을 허용하십시오.
-not -name /var/www/html/content/processing
그리고 전체 명령은 다음과 같습니다.
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;
-name
basename을 나타내며 슬래시와 일치하는 항목은 없습니다. 을 사용해야 할 수도 있습니다 -path
.
이미 대답했지만 여전히 다른 접근법을 나열하고 싶습니다.
find /var/www/html/content/processing -mindepth 1 -maxdepth 1 -type d
이것은 최상위 디렉토리 (및 하위 디렉토리)를 제외하고 이제 우리가 적용하려는 모든 명령을 적용 할 수 있습니다.
>> 옵션 :
-mindepth 1 : 루트 디렉토리 제외
-maxdepth 1 : 하위 디렉토리 구문 분석을 피합니다. (질문에 따라 특정 시나리오의 경우 필요하지 않습니다).
-type d : 디렉토리 유형 만 나열합니다. 이 옵션은 mindepth maxdepth 사용 후에 나옵니다.
-maxdepth 1
? 왜 -type d
두 번? 이것이 허용되는 답변과 어떻게 다릅니 까?