디렉토리의 파일을 변경하면 해당 디렉토리의 시간이 변경되지 않습니까?

디렉토리의 파일을 변경하면 해당 디렉토리의 시간이 변경되지 않습니까?

최근에 생성한 파일을 찾고 싶지만 파일에 대한 내용이 전혀 기억나지 않고 가능한 깊이의 간접 디렉터리에 있다고 추측만 할 뿐입니다.

  1. 디렉토리의 모든 하위 디렉토리의 시간을 확인했지만 모두 파일을 생성한 시간보다 오래된 시간을 가지고 있습니다. 디렉토리의 파일이 업데이트될 때 디렉토리의 시간이 업데이트되지 않는 이유를 알고 싶습니다.
  2. 당신이라면 파일을 어떻게 찾겠습니까? find몇 가지 시간 옵션을 사용하여 ? 감사해요.

답변1

나는 사용할 것이다

find <PARENT_DIR> -type f -mtime 1

1마지막으로 수정된 일수( "X일 미만" 또는 "X일 초과"를 의미하기 위해 앞에 -또는 를 붙일 수 있음 +): 따라서 지난 3일 동안 파일을 수정하려면, 당신은 할 것이다-mtime -3

답변2

다른 파일과 마찬가지로 디렉터리 수정 시간(방법을 참고하세요.목차~라고 불리는목차(목록이름/숫자전화번호부와 같은 매핑) 대신폴더)언제든지콘텐츠수정되었습니다.

즉, 파일이 추가(링크), 삭제(링크 해제)되거나 이름이 변경된 경우입니다.

파일은 여러 디렉터리에 연결될 수 있습니다. 시스템은 어떤 파일이 링크되어 있는지에 대한 실시간 목록을 유지하지 않습니다(쓰기를 위해 주어진 열린 파일 설명자에 대한 어떤 디렉토리도 추적하지 않습니다).파일을 열려면(구성 요소는 언제든지 이름을 바꿀 수 있음), 그렇다면 파일이 연결된 모든 디렉터리와 모든 상위 항목의 수정 시간을 업데이트합니다. /이는 결국 수행됩니다.

종종 유일한 옵션은 파일 시스템에 있는 모든 파일의 수정 시간을 찾는 것입니다.

당신은 할 수사용법은 find코렌틴에 나와 있는 것과 같습니다., 또는 이러한 모든 디렉토리를 읽지 않으려면 inode 테이블에 있는 모든 inode의 수정 시간을 확인할 수 있습니다(비록 이 작업을 수행할 수 있는 도구는 모르지만).

일부 파일 시스템은 btrfs최근에 수정된 파일에 대한 단서를 제공할 수 있습니다.

$ sudo btrfs sub find-new / -1
transid marker was 2273028
$ sudo btrfs sub find-new / 2273020
inode 60319801 file offset 212992 len 4096 disk start 8350875648 offset 0 gen 2273024 flags NONE root/screenlog.2
inode 60319801 file offset 217088 len 28672 disk start 8403632128 offset 0 gen 2273023 flags NONE root/screenlog.2
inode 61045822 file offset 360448 len 4096 disk start 1111568384 offset 0 gen 2273022 flags NONE var/log/apache2/access.log
inode 61045835 file offset 2326528 len 8192 disk start 7824994304 offset 0 gen 2273024 flags NONE var/log/syslog
inode 61045840 file offset 57344 len 8192 disk start 1517305856 offset 0 gen 2273023 flags NONE var/log/kern.log
[...] 

관련 정보