Đây có vẻ là trường hợp điển hình của các tính năng không chuẩn trên các nền tảng khác nhau.Cách tốt nhất để nhận thời gian sửa đổi tệp trong vài giây
Rất đơn giản, tôi muốn một phương pháp phổ biến (hoặc ít nhất là rộng rãi) được hỗ trợ để nhận được thời gian sửa đổi của một tệp dưới dạng dấu thời gian unix trong vài giây.
Bây giờ tôi biết nhiều cách khác nhau để thực hiện việc này với stat
nhưng hầu hết là nền tảng cụ thể; ví dụ: stat -c %Y $file
hoạt động đối với một số, nhưng sẽ không hoạt động trên OS X (và có lẽ là các hệ thống FreeBSD khác) sử dụng stat -f %m $file
thay thế.
Tương tự như vậy, một số nền tảng hỗ trợ date -r $file +%s
, tuy nhiên OS X/FreeBSD lại không như tùy chọn -r
dường như chỉ là một thay thế để sử dụng +%s
để có được một dấu thời gian unix, chứ không phải là lựa chọn tập tin tài liệu tham khảo như trên các nền tảng khác.
Cách thay thế khác mà tôi quen thuộc là sử dụng find
với tùy chọn -printf
, nhưng lại không được hỗ trợ rộng rãi. Phương pháp cuối cùng tôi biết là phân tích cú pháp ls
, ngoài việc là một điều khó chịu phải làm, không phải là điều mà tôi tin rằng có thể (hoặc ít nhất là) nên dựa vào một trong hai.
Vì vậy, có phương pháp tương thích hơn để nhận thời gian sửa đổi của tệp không? Hiện tại tôi chỉ đang ném các biến thể khác nhau của stat
vào một tập lệnh và chạy chúng cho đến khi thoát ra với trạng thái bằng 0, nhưng điều này là xa lý tưởng, ngay cả khi tôi lưu bộ nhớ cache thành công để chạy đầu tiên trong tương lai.
tôi có thể không thực sự bó bất cứ điều gì; mục đích là chỉ cần có một kịch bản shell đơn giản nên chạy trên gần như bất kỳ hệ điều hành Unix nào. Vấn đề là tôi cần phải bao gồm các môi trường như hộp NAS, có thể không bao gồm Python hoặc Perl. Có thực sự không có cách nào tốt hơn để làm điều này trong một vỏ? – Haravikk