긴 매개변수 목록을 만나지 않고 디렉토리 세트를 삭제하려면 find 명령을 사용하십시오.

긴 매개변수 목록을 만나지 않고 디렉토리 세트를 삭제하려면 find 명령을 사용하십시오.

내 경우에는 /tmp 디렉토리에 적어도 25,000 - 50,000개의 디렉토리가 있었습니다. 다음 명령을 사용하여 이 디렉터리에서 2일보다 오래된 디렉터리를 삭제하려고 합니다.

find /path/to/tmp/* -type d -ctime +2 -delete

그런데 매개변수 목록이 너무 길다는 오류가 계속 발생합니다. 삭제된 디렉터리 수를 구체적으로 제한하는 방법은 무엇입니까? 또한 maxlength 1 옵션을 사용해 보았지만 작동하지 않는 것 같습니다.

답변1

*모든 것을 반환하므로 삭제할 수 있으며 이것이 오류의 원인입니다.

MacOS는 파일이나 폴더 생성 시간을 기록하지만 Linux는 기록하지 않습니다.

명령을 실행하면 ctime +22일 이상 전에 변경 사항(액세스 시간 제외)이 발생한 디렉터리를 찾아 삭제하게 됩니다. 여기에는 변경된 권한, 소유권 또는 디렉터리 이름의 변경 사항이 포함됩니다. 생성 날짜/연령을 기준으로 디렉토리에는 아무 작업도 수행하지 않습니다.

답변2

도트 디렉터리를 제외해야 하는 경우가 아니면 *필요하지 않습니다. 사용 시 *쉘은 와일드카드를 해당 디렉토리의 모든 파일 및 디렉토리로 확장하고 이를 인수로 전달하므로 find인수 길이 문제가 발생합니다. 이것이 없으면 find해당 디렉터리 내에서 반복되며 자체적으로 하위 디렉터리와 일치합니다.

관련 정보