통계 : 파일의 수정 타임 스탬프


11

stat -f %m .bashrcosx에서 .bashrc의 수정 시간을 얻는 데 사용 합니다. 그러나 우분투에서 동일한 명령을 실행하면 오류가 발생합니다.

stat: cannot read file system information for %m': No such file or directory

이것을 달성 할 수있는 호환 가능한 방법이 있습니까?

답변:


12

우분투는 GNU coreutils를 사용하는 stat반면 OSX는 BSD 변형을 사용합니다. 우분투에서 명령은 약간 다릅니다.

stat -c %Y .bashrc

보낸 사람 man stat:

   -c  --format=FORMAT
          use the specified FORMAT instead of the default; output  a  new
          line after each use of FORMAT

과:

   %Y     time of last data modification, seconds since Epoch

OS에 관계없이 이식 가능한 방법을 원한다면 몇 가지 방법이 있습니다. 변수를 적절한 매개 변수로 한 번 설정한다고 생각합니다.

if uname | grep -q "Darwin"; then
    mod_time_fmt="-f %m"
else
    mod_time_fmt="-c %Y"
fi

그런 다음 stat필요할 때마다 명령 에이 값을 사용하십시오 .

stat $mod_time_fmt .bashrc

7

"this"의 의미에 따라 다릅니다. 당신이 파일을 얻을 수있는 휴대용 방법이 여부를 묻는 경우 없습니다 mtimestat(1)다음 더,이 없다. BSD stat(1)는 Linux와 다릅니다 stat(1).

파일을 가져올 수있는 이식 가능한 방법이 있는지 묻는 경우 mtime예, 다음과 perl(1)같이 할 수 있습니다 .

perl -e 'print +(stat $ARGV[0])[9], "\n"' file

5

OSX와 Ubuntu 버전의 statOSX는 stat기본적으로 출력을 간결하게하고 Linux stat기본값은 일부 후프 를 건너 뛰어야 한다는 점에서 약간의 차이 가 있기 때문입니다. 한 가지 가능성은 OSX에서 별명을 사용하여 stat가 둘 다 동일하게 수행하도록하는 것입니다.

statOSX에서 상세 출력을 강제로 설정하기 위해 별명을 설정하지 않아도된다면 alias stat="stat -x"perl은 필요하지 않습니다.

stat .bashrc| grep Modify 우분투에서 필요한 모든 것입니다. 위와 같이 별칭을 설정하면 OSX에서도 작동 합니다.

Ubuntu 14.04.5의 예 Ubuntu 16.04에서 거의 동일한 결과를 얻을 수 있습니다.

   stat .bashrc| grep Modify
Modify: 2014-03-30 23:14:47.658210121 -0500

타임 스탬프 만 있으면 원하는 것을 제거 Modify:하고 나머지는

stat .bashrc| grep Modify | cut -c 9-

출처 :

https://ss64.com/osx/stat.html

OSX에서 통계 출력


OSX에서 -x 옵션이 누락되었다고 생각합니다.
fushupinnanren

@ Derry 당신은 정확합니다, 슬프게도 OSX가 없기 때문에 OSX 비트에 대한 연구에 의존해야합니다. 정답.
Geek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.