연도를 기준으로 파일 삭제

연도를 기준으로 파일 삭제

2009년에 생성된 디렉토리의 모든 파일을 삭제해야 합니다. 이 작업을 수행하려면 어떤 명령을 사용할 수 있나요?

답변1

대부분의 파일 시스템은 파일 생성 시간을 저장하지 않으므로 파일의 마지막 수정 시간을 확인하는 것이 최선입니다.

최신 버전의 GNU find(예: Linux 또는 Cygwin), FreeBSD 또는 OSX가 있는 경우 한 파일의 날짜를 다른 파일의 날짜와 직접 비교할 수 있습니다. 또한 B시스템에서 사용 가능한 경우 이러한 find 버전은 파일 생성 시간(표시된 대로 생성 시간이라고 함)을 사용할 수 있습니다. 출생 시간 대신 수정 시간을 사용하려면 다음 B으로 바꾸세요 .m

find /path/to/directory -newerBt '2009-01-01' ! -newerBt '2010-01-01' -type f -delete

-delete원하는 파일인지 확인하기 위해 먼저 한 번 실행할 필요가 없습니다 . 위 명령은 하위 디렉터리의 파일도 삭제합니다. 필요하지 않은 경우 -mindepth 1 -maxdepth 1디렉터리 이름 뒤에 추가하세요.

버전에 메이저 버전이 find없는 경우 -newerXY일치시키려는 시간 범위의 경계를 표시하는 타임스탬프 파일을 생성해야 합니다.

touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
find /path/to/directory -newer /tmp/from ! -newer /tmp/to -type f -exec rm {} +

지쉬의글로벌 예선시간 간격 내에서 파일을 일치시킬 수 있지만 현재 날짜를 기준으로 한 경계만 표시할 수 있습니다(예:질소며칠 전).

rm /path/to/directory/*(.m+566^m+931)

타임스탬프 파일을 사용하여 정확한 날짜를 얻을 수도 있지만 단순성을 잃게 됩니다.

touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
rm /path/to/directory/*(.e\''[[ $REPLY -nt /tmp/from && $REPLY -ot /tmp/to ]]'\')

답변2

다른 사람들도 그렇게 말했지만 find당신도 확인해 보고 싶을 수도 있습니다 tmpwatch.

답변3

적절한 옵션이 포함된 명령은 find정확히 원하는 작업을 수행해야 합니다.

당신이 묻는 질문은 숙제와 매우 흡사하기 때문에 나는 단서가 있는 사람들을 위한 연습 차원에서 매뉴얼 페이지를 철저히 읽어볼 것입니다.이 튜토리얼@jfgagne가 제공한 내용은 큰 도움이 될 것입니다.

관련 정보