내 프로필
ID=29524 02/12/2015,23:59:34,'PAt, 0,
ID=29628 02/12/2015,23:59:37,'PAb, 1.9,
ID=30816 03/12/2015,00:00:20,'PAc, 4.15,
오늘보다 X일 오래된 파일을 인쇄하고 싶습니다.
내 시도는 다음과 같습니다.
cat response.txt | awk -v start=$(date -d "-5 days" +%d/%m/%Y) -F" " '{split($2, a, /\//)} (a[3] a[1] a[2] <start)'| cut -d, -f1
답변1
오늘보다 X일 적다고 하면 "5일보다 오래된" 파일을 의미한다고 가정합니다. 정확히 5일 된 파일을 의미하는 경우 아래 스크립트를 수정하여 가장 가능성이 높은 타임스탬프를 제거해야 하며 -lt를 -eq로 바꿀 수 있습니다.
#!/bin/bash
CUTOFF=$(date +%s -d "5 days ago")
while read p; do
time=$(echo $p | awk -F'[ ,]' '{print $2" "$3}')
epoch_time=$(date --date="$time" +%s)
if [ $epoch_time -lt $CUTOFF ]; then
echo $p
fi;
done <response.txt
위 코드는 response.txt를 로드하고 파일의 각 줄을 반복합니다. awk는 공백과 쉼표로 별도의 열로 구문 분석한 다음 날짜와 시간을 인쇄합니다. 그 후에(아마도 같은 줄에서 수행될 수 있음) 날짜/시간을 초 단위의 에포크 시간으로 변환합니다. 그런 다음 if 문을 통해 마감일(초 단위)을 파일 시간과 비교하면 됩니다.
위의 내용은 파일만 인쇄합니다.5일 이상.