"ls -all"이 일부 파일의 경우 시간을 표시하고 다른 파일의 경우 연도만 표시하는 이유는 무엇입니까?

"ls -all"이 일부 파일의 경우 시간을 표시하고 다른 파일의 경우 연도만 표시하는 이유는 무엇입니까?

이 명령을 실행하면 ls -all일부 파일에는 연도는 포함하지만 시간은 포함되지 않은 타임스탬프가 표시되는 반면, 다른 파일에는 연도가 아닌 시간은 포함된 타임스탬프가 표시됩니다. 왜 이런 일이 발생합니까? 타임스탬프는 파일이 생성된 시간을 나타냅니까?

여기에 이미지 설명을 입력하세요.

답변1

기본적으로 파일 타임스탬프는 최근 타임스탬프가 아닌 경우 "2002년 3월 30일"과 같은 날짜를 사용하고 최근 타임스탬프의 경우 연도 및 시간이 없는 날짜(예: "3월 30일 23:45")를 사용하여 축약된 형식으로 나열됩니다. 이 형식은 아래 설명과 같이 현재 로케일에 따라 달라질 수 있습니다.

타임스탬프가 6개월 미만인 경우 최근 날짜로 간주되며 미래 날짜가 아닙니다. 오늘의 타임스탬프가 가장 최근 형식으로 나열되지 않은 경우 타임스탬프는 미래에 있는 것입니다. 이는 파일 타임스탬프에 의존하는 프로그램(예: make)을 중단시킬 수 있는 시계 왜곡 문제가 있을 수 있음을 의미합니다.

원천:http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

표시하려면:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

답변2

표시된 시간은 수정 시간입니다. 와 은 ls -all같은 것이며 ls -l -a다른 것이므로 주의하시기 바랍니다 ls --all. l귀하의 예에서 double을 사용할 이유가 없습니다 . 각 파일의 수정 시간을 보려면 를 사용하면 됩니다 ls -al --full-time.

답변3

표시하려는 날짜/시간이 지난 6개월 이내인 경우 ls해당 날짜 및 시간이 표시됩니다. 시간이 6개월 이상 전이거나 미래인 경우 ls날짜와 연도가 표시됩니다.

다른 답변에서 언급했듯이,

  • ls -llls -l, 및
  • ls -all, , 및 와 ls -al동일 합니다 .ls -a -lls -l -als -la

-l옵션을 사용하면 ls파일("모든 것이 파일이기 때문에 디렉터리 포함)의 수정 날짜/시간을 표시합니다.~하지 않는 한

  • -c또한 지정하는 경우에는 변경 시간을 표시합니다.
  • -u또한 지정하며, 이 경우 접속 시간을 표시합니다.

바라보다LS(1)더 많은 정보를 알고 싶습니다.

답변4

오래된 파일에 대한 풀타임을 얻으려면 개인적으로 다음을 사용합니다.

alias ls='ls --time-style=long-iso -Altr'

그래서 로컬에서는 그런 문제가 없습니다. 그러나 FTP를 사용하는 데에는 여전히 문제가 있습니다. 나는 lftp의 미러 옵션을 사용하여 오래된 사진을 내 웹사이트에 업로드하고 있습니다. 일부 사진은 업로드되었지만 변경되지 않았으며 타임스탬프도 없습니다. 이것이 시간대 충돌인지 알아내려고 노력 중이지만 파일 시간이 기본적으로 표시되지 않고 FTP 서버가 ls 옵션 "--time-style=long-iso"를 허용하지 않기 때문에 그럴 수 없습니다.

관련 정보