지난 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[@]}"
따라서 이는 한 번에 하나의 지정된 날짜만 처리합니다.