/부터 시작하여 수정된 모든 파일을 반복적으로 나열해야 합니다. 2020년 서류만 해당됩니다. find로 여러 명령을 시도했지만 작동하지 않습니다.
답변1
GNU 구현 find
(일반적으로 Linux를 커널로 사용하는 비임베디드 운영 체제에서 발견됨)을 사용하면(실제로 BSD 사용자 기여 패치로 처음 도입되었기 때문에 구문은 GNU에 국한되지 않지만) 다음을 수행할 수 있습니다.
find / -type f -newermt 2020-01-01 ! -newermt 2021-01-01
여기에는 2021-01-01 00:00:00.000000000에 마지막으로 수정된 파일이 포함되며, 2020-01-01 00:00:00.000000000에 마지막으로 수정된 파일은 포함되지 않습니다. 현실적으로 정확한 나노초 정밀도의 파일을 생성하는 것은 거의 불가능하지만, 이는 나노초 정밀도로 시간을 저장하지 않는 아카이브에서 추출된 파일이나 오랫동안 타임스탬프가 변조된 파일의 경우입니다. 여전히 일어날 수 있습니다 touch -d 2020-01-01
. 예.
GNU의 또 다른 접근 방식 find
은 다음과 같습니다.
find / -type f -printf '%TY%p\0' | LC_ALL=C sed -zn 's/^2020//p' | tr '\0' '\n'
즉, find
파일이 마지막으로 수정된 연도가 인쇄되고 그 뒤에 NUL로 구분된 레코드의 경로가 인쇄되며, 이는 sed
2020년부터 시작하는 레코드를 필터링하는 데 사용됩니다.
find
지원되지 않는 구현 의 경우 -newermt
표준 조건자를 사용하여 참조 파일을 만들고 표준 조건자와 비교할 수 touch
있습니다 .-newer
mkfifo first last
touch -d 2020-01-01 first
touch -d 2021-01-01 last
find / -type f -newer first ! newer last
(여기서는 일반 파일이 아닌 fifo 파일로 생성되므로 선택되지 않습니다 -type f
.)