Tôi biết rõ việc có thể thực hiện find myfile.txt -mtime +5
để kiểm tra xem tệp của tôi có lớn hơn 5 ngày hay không. Tuy nhiên tôi muốn lấy mtime trong ngày của myfile.txt và lưu nó vào một biến để sử dụng thêm. Tôi sẽ làm như thế nào?bash - Nhận mtime của tập tin cụ thể?
Trả lời
stat
có thể cung cấp cho bạn những thông tin:
filemtime=`stat -c %Y myfile.txt`
%Y
mang đến cho bạn sự biến đổi cuối cùng là "giây kể từ khi The Epoch", nhưng có rất nhiều lựa chọn khác; more info. Vì vậy, nếu tệp đã được sửa đổi vào ngày 2011-01-22 lúc 15:30 GMT, thì ở trên sẽ trả về một số trong khu vực của 1295710237.
Chỉnh sửa: Ah, bạn muốn thời gian sau khi nó được sửa đổi . Điều đó sẽ phức tạp hơn, ít nhất là vì "ngày" không phải là khoảng thời gian cố định (một số "ngày" chỉ có 23 giờ, số khác 25 — nhờ thời gian tiết kiệm ánh sáng ban ngày).
Các ngây thơ phiên bản có thể trông như thế này:
filemtime=`stat -c %Y $1`
currtime=`date +%s`
diff=$(((currtime - filemtime)/86400))
echo $diff
... nhưng một lần nữa, đó là giả định một ngày luôn có chiều dài chính xác 86.400 giây.
Tìm hiểu thêm về số học trong bash here.
Tôi là câu trả lời này?
A=$(stat -c "%y" myfile.txt)
nhìn vào stat giúp đỡ
stat --help
Usage: stat [OPTION]... FILE...
Display file or file system status.
[...]
-c --format=FORMAT use the specified FORMAT instead of the default;
output a newline after each use of FORMAT
[...]
The valid format sequences for files
[...]
%y Time of last modification, human-readable
%Y Time of last modification, seconds since Epoch
[...]
AGE=$(perl -e 'print -M $ARGV[0]' $file)
sẽ đặt $ TUỔI đến tuổi $ tập tin trong ngày, như điều hành -M
Perl xử lý các stat
cuộc gọi và chuyển đổi sang ngày đối với bạn .
Giá trị trả lại là giá trị dấu phẩy động (ví dụ: 6.62849537 ngày). Thêm một int
đến sự biểu hiện nếu bạn cần phải có một kết quả số nguyên
AGE=$(perl -e 'print int -M $ARGV[0]' $file)
Ruby và Python cũng có của họ một lớp lót để stat một tập tin và trở lại một số dữ liệu, nhưng tôi tin rằng Perl có cách ngắn gọn nhất.
Đây là câu trả lời hay hơn so với chấp nhận! – Anne
- 1. bash ~ để lặp qua các tập tin cụ thể trong một thư mục
- 2. tập tin vim cụ thể .vimrc
- 3. bash thêm nội dung tập tin để dưới cùng của tập tin hiện có
- 4. tập tin wget và gửi cho bash
- 5. Đoạn mã BASH: tập tin whiptail chọn
- 6. cách tìm tập tin trong một nhánh cụ thể
- 7. Xoay tập tin nhật ký tập lệnh Bash
- 8. Thực hiện một tập lệnh bash khi tạo tập tin
- 9. Tập lệnh Bash - Đọc tập tin nhị phân
- 10. Chạy jQuery trên một tập tin HTML tĩnh từ Bash
- 11. Bash Script: đếm các dòng duy nhất trong tập tin
- 12. ngoại lệ mod_rewrite cho một tập tin cụ thể
- 13. Symfony 2: Đăng nhập vào một tập tin cụ thể
- 14. kéo cụ thể cam/tập tin từ git
- 15. grep một danh sách các tập tin cụ thể
- 16. cách nhận tin nhắn văn bản đến cổng cụ thể ..
- 17. Luôn ctime <= mtime?
- 18. Chuyển hướng Bash với bộ mô tả tập tin hoặc tên tập tin trong biến
- 19. Bash Tab Hoàn Gợi ý Hidden SVN tập tin
- 20. Cam kết các phần cụ thể của một tập tin trong Git
- 21. Tìm tập tin, đổi tên tại địa điểm unix bash
- 22. Bash: viết số nguyên đến tập tin nhị phân
- 23. Chèn nội dung của một tập tin sau khi kết hợp mẫu cụ thể
- 24. Bash: Tìm tập tin với dòng max đếm
- 25. Tìm và xóa các tập tin trong .txt bash
- 26. Nhận kích thước của tập tin trong Haskell
- 27. Bash: Sắp xếp tập tin từ 'tìm' bởi nội dung
- 28. Bash: parallelize md5sum checksum trên nhiều tập tin
- 29. Chỉnh sửa tập tin Bash và giữ 500 dòng cuối
- 30. Bash ghi vào tập tin mà không có tiếng vọng?
Điều đó thật ngọt ngào, thật không may tôi đã làm một kẻ ngốc của bản thân mình và quên rằng tôi cần tuổi mtime trong ngày. Điều đó có thể không? – Industrial
@Industrial: Một khi bạn có giá trị, bạn có thể làm toán trên đó. Tôi không làm theo những gì bạn có nghĩa là bởi "... tuổi mtime trong ngày." (Ngày kể từ khi nào? Bạn có nghĩa là, bao nhiêu ngày trước nó đã được sửa đổi?) –
Bỏ lỡ phần về ngày, bỏ phiếu +1 – Anders