특정 날짜 이후 방문하지 않은 디렉토리를 나열하려면 찾기를 사용하시겠습니까?

특정 날짜 이후 방문하지 않은 디렉토리를 나열하려면 찾기를 사용하시겠습니까?

stat명령을 사용하여 디렉터리에 마지막으로 액세스한 날짜를 보고 형식을 지정합니다. 이것adate

find특정 날짜 이전에 변경된 디렉토리를 찾는 방법이 있습니까 ?test

답변1

쉘 스크립트

findsed, , , sort(및 echo"사용" 부분) 만 사용하여 다음 쉘 스크립트를 시도해 볼 수 있습니다 . find할 수 있는 일은 할 수 있다 stat. 유일한 차이점은 !테스트를 무효화하는 문자 하나입니다 -newerat.

olderdate:

#!/bin/bash

if [ $# -ne 2 ]
then
 echo "Usage:   $0 <reference date> <directory> "
 echo "Example: $0 2018-11-30 ."
 exit
fi

find "$2" -type d ! -newerat "$1" -printf "%AY-%Am-%Ad %AT  %p\n" |
 sed -e 's%\..*  /%     /%' \
     -e 's%\..*  \.%     .%' | sort

newerdate:

#!/bin/bash

if [ $# -ne 2 ]
then
 echo "Usage:   $0 <reference date> <directory> "
 echo "Example: $0 2018-11-30 ."
 exit
fi

find "$2" -type d -newerat "$1" -printf "%AY-%Am-%Ad %AT  %p\n" |
 sed -e 's%\..*  /%     /%' \
     -e 's%\..*  \.%     .%' | sort

날짜뿐만 아니라 시간도 지정 hours하거나 두 번째 인수를 인용하는 hours:minutes경우hours:minutes:seconds

./olderdate '2018-12-19 18' /path

접근 시간의 "자동" 수정에 대한 설명

몇 가지 테스트를 수행한 결과 어떤 경우에는 검색 디렉토리의 액세스 날짜와 시간이 수정될 수 있음 을 확인했습니다 find. stat이는 디렉토리의 내용이 변경되었지만 디렉토리 자체의 액세스 시간이 업데이트되지 않은 경우 발생하는 것 같습니다.

이 경우 출입 시간은 현재 시간으로 설정됩니다. 그러나 디렉터리를 다시 검색할 때 find액세스 stat날짜와 시간은 동일하게 유지됩니다(디렉터리에서 다시 변경되는 사항이 없는 한).

답변2

다음과 같이 시작할 수 있습니다.

MY_DATE="2018-12-19 06:30"
for i in $(find . -type d)
do
    if [[  $(date -d"$(stat $i | grep ^Access | tail -1 | awk '{print $2 " " $3}')" +%s) -gt $(date -d"$MY_DATE" +%s) ]]
    then
        echo $i
    fi
done

경로에 공백이 포함된 디렉터리에서는 작동하지 않습니다.

스크립트는 실행된 위치에서 발견된 모든 디렉터리를 반복하고(find 명령을 수정하여 변경할 수 있음) 해당 디렉터리에 대해 stat를 실행하여 액세스 날짜를 MY_DATE 변수에 제공된 날짜와 비교합니다.

답변3

이 정도가 맞나요?

$ cd ~

# adate for ./Pictures/
$ stat -c %x ./Pictures/
2018-05-18 11:08:44.326743397 -0400

# adate for ./Music/
$ stat -c %x ./Music/
2018-05-18 11:08:44.325743396 -0400

# Change das adate for ./Music/:
$ ls -la ./Music/
drwxr-xr-x. 2  leeand00 leeand00     6 May 18 2018  .
drwx------. 24 leeand00 leeand00  4096 Dec 11 09:54 .. 

# Read the adate for ./Music/ to see that it changed:
$ stat -c %x ./Music/
2018-12-19 23:35:04.789892164 -0500

# Read the adate from ./Pictures/ to see that it did not change:
$ stat -c %x ./Pictures/
2018-05-18 11:08:44.326743397 -0400

# Don't re-invent the wheel:
# `-type d` (look for folders only)
#
# `-maxdepth 1` (Only look inside this directory for folders, 
#                don't descend lower than that)
#
# `-amin -300` ()
#
$ find . -maxdepth 1 -type d -amin -300
.
./Music

관련 정보