파일 날짜를 기준으로 파일을 압축하는 방법

파일 날짜를 기준으로 파일을 압축하는 방법

내 디렉토리에는 지난 7일 동안의 오래된 날짜가 포함된 파일이 30개 이상 있습니다. 이제 생성/수정 날짜를 기준으로 파일을 압축해야 합니다.

예를 들어
4월 7일의 파일 10개 -- april7.zip의 zip 생성
4월 8일의 파일 10개 -- april8.zip의 zip 생성
4월 9일의 파일 10개 -- april9.zip의 zip 생성

답변1

일반적 find -mtime으로 현재 시점을 기준으로 연령을 테스트하기 때문에 여기에서는 사용하기가 약간 어렵습니다.

GNU 날짜와 Bash를 사용하면 유사한 작업을 수행하여 파일 날짜에 해당하는 아카이브에 각 파일을 추가할 수 있습니다.

for f in * ; do 
    zip $(date -r "$f" +%F).zip "$f"        # 2017-04-07.zip
done

또는:

for f in * ; do
    d=$(date -r "$f" +%B%d)
    zip ${d,,}.zip "$f"                     # april07.zip
done                                        # ${var,,} is for lowercase

( date수정 시간만 읽을 수 있습니다. 출력 형식을 수정하려면 더 많은 작업을 ctime사용하고 수행해야 하기 때문입니다.)stat


어떤 이유로 처리하기 전에 특정 날짜의 모든 파일 목록을 가져와야 하는 경우 해당 파일을 배열로 수집할 수 있습니다.

files=()
date="2017-04-07"
for f in * ; do 
    [ "$(date -r "$f" +%F)" = "$date" ] && files+=("$f")
done
# do something with "${files[@]}', e.g.
# zip $date.zip "${files[@]}"

따라서 현재로서는 지정된 날짜 하나만 처리할 수 있습니다.

관련 정보