이번 달에 생성된 파일을 확인하세요.

이번 달에 생성된 파일을 확인하세요.

내 디렉토리에 파일이 있는데 해당 파일이 당월에 생성되었는지 확인해야 합니다. 쉘 스크립트에서 솔루션을 시도하고 있습니다.

예: 내 파일 경로는 다음과 같습니다. 파일이 이번 달에 생성되었는지 data/tmp/docs/test.txt확인하고 싶습니다 .test.txt

답변1

GNU를 사용 하거나 dateLinux를 커널로 사용하는 시스템에서 busybox date가장 일반적인 구현은 다음과 같습니다.date

if [ "$(date -r file +%Y%m)" = "$(date +%Y%m)" ]; then
  echo "file was last modified this month"
fi

(심볼릭 링크의 경우 대상의 mtime을 확인합니다.)

POSIXly에서는 다음을 통해 동일한 결과를 얻을 수 있습니다.

(
  export LC_ALL=C; unset -v IFS
  eval "$(date +'cur_month=%b cur_year=%Y')"
  ls -Lnd file | {
    read -r x x x x x month x year_or_time x &&
      case $month-$year_or_time in
        ("$cur_month-$cur_year" | "$cur_month"-*:*)
          echo "file was last modified this month"
      esac
  }
)

답변2

find -ctime이 작업은 및 date +%d(월의 날짜) 조합을 사용하여 수행할 수 있습니다 . 전체 명령은 다음과 같습니다.

find data/tmp/docs/test.txt -ctime -`date +%d`

파일이 최신이면 출력 일수가 표시되고 그렇지 않으면 출력이 비어 있습니다. 따라서 변수에 할당하고 비어 있는지 확인하십시오.

OUTPUT=$( find data/tmp/docs/test.txt -ctime -`date +%d` )
if [ -n "$OUTPUT" ] ; then echo "file created in current month" ; fi

업데이트: @StéphaneChazelas가 의견에서 언급했듯이 -ctime은 생성 시간이 아니라 상태 변경 시간(fe chmod가 해당 날짜를 업데이트함)이지만 Linux는상태 구조다음만 포함:

time_t    st_atime   time of last access
time_t    st_mtime   time of last data modification
time_t    st_ctime   time of last status change

따라서 IMHO, 파일 생성 후 상태 변경이 없으면 ctime이 가장 좋은 옵션입니다.

관련 정보