Bash

stat:文件的修改時間戳

  • March 7, 2017

我用來stat -f %m .bashrc在 osx 上獲取 .bashrc 的修改時間。但是當我在 ubuntu 上執行相同的命令時,它會吐出錯誤:

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

有沒有兼容的方法來實現這一點?

Ubuntu 使用 GNU coreutils stat,而 OSX 使用 BSD 變體。所以在 Ubuntu 上,命令有點不同:

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

如果您想要一種便攜的方式來執行這些而不考慮作業系統,那麼有幾種方法可以做到這一點。我想我會為適當的參數設置一個變數:

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

stat然後在需要時在命令中使用此值:

stat $mod_time_fmt .bashrc

引用自:https://unix.stackexchange.com/questions/349555