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

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

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

예를 들어
4월 7일에 10개 파일 -- april7.zip에 대한 zip 생성
4월 8일에 10개 파일 -- april8.zip에 대해
10개 파일 생성 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[@]}"

따라서 이는 한 번에 하나의 지정된 날짜만 처리합니다.

관련 정보