IT Share you

Linux 터미널에서 내용을 고려하여 폴더의 마지막 수정 날짜를 어떻게 표시합니까?

shareyou 2020. 12. 12. 12:41
반응형

Linux 터미널에서 내용을 고려하여 폴더의 마지막 수정 날짜를 어떻게 표시합니까?


그래서 여기에 거래가 있습니다. "web"이라는 디렉토리가 있다고 가정 해 보겠습니다.

$ ls -la

drwx------  4 rimmer rimmer 4096 2010-11-18 06:02 web

하지만이 디렉토리 안에있는 web / php /

$ ls -la

-rw-r--r-- 1 rimmer rimmer 1957 2011-01-05 08:44 index.php

즉, 내 디렉토리 /web/php/index.php의 내용이 2011-01-05에 마지막으로 수정되었지만 / web / 디렉토리 자체는 2010-11-18에 마지막으로 수정 된 것으로보고됩니다.

내가해야 할 일은 내 / web / 디렉토리의 마지막 수정 날짜를이 디렉토리 안에있는 파일 / 디렉토리의 최신 수정 날짜로보고하는 것입니다.

어떻게해야합니까?


다음과 같은 것 :

find /path/ -type f -exec stat \{} --printf="%y\n" \; | 
     sort -n -r | 
     head -n 1

설명:

  • find 명령은 디렉토리를 무시하는 모든 파일에 대한 수정 시간을 인쇄합니다 (IQAndreas의 주석에 따르면 폴더 타임 스탬프에 의존 할 수 없음).
  • sort -n (숫자) -r (역방향)
  • head -n 1 : 첫 번째 항목 가져 오기

지원 하는 버전 find(예 : GNU find)이있는 -printf경우 stat반복적 으로 호출 할 필요가 없습니다 .

find /some/dir -printf "%T+\n" | sort -nr | head -n 1

또는

find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1

재귀가 필요하지 않은 경우 :

stat --printf="%y\n" *

가능하다면 Paulo의 답변에 투표하겠습니다. 나는 그것을 테스트하고 개념을 이해했습니다. 작동하는지 확인할 수 있습니다. find명령은 많은 매개 변수를 출력 할 수 있습니다. 예를 들어 다음을 --printf절에 추가합니다 .

%a for attributes in the octal format
%n for the file name including a complete path

예:

find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file

이 질문도 제기하겠습니다.이 질문의 작성자가 Bash 또는 PHP를 사용하여 문제를 해결하고 싶습니까? 지정해야합니다.

참고 URL : https://stackoverflow.com/questions/4997242/in-linux-terminal-how-do-i-show-the-folders-last-modification-date-taking-its

반응형