如何至少在几天内获得给定文件的年龄?
我很清楚ls -lh和类似的命令。我想要一些像这样工作的东西:
getfage <FILE> # prints out '12d' (12 days)
Run Code Online (Sandbox Code Playgroud)
此外,这需要有点跨平台,因为我也想在 Mac OS X 下使用它,但主要用例是在我的 Linux 盒上。
笔记
由于 Linux 不跟踪创建时间,我正在寻找两种解决方案:一种用于mtime (linux)——这是最后一次修改所述文件——另一种用于 Mac OS X,它可以处理mtime或创建时间。
我正在使用tar打包多个文件。修改文件上的时间戳很关键,并且必须具有很高的准确性。使用tar -cvf,时间戳被保留但四舍五入到最接近的秒,即stat在文件上运行只显示以 .0 结尾的时间戳。有没有办法更准确地保存时间戳,或者是否有其他存档工具可以用于此目的?
如何编写一个脚本来将 20 个最旧的文件从一个文件夹移动到另一个文件夹?有没有办法抓取文件夹中最旧的文件?
我正在尝试使用“日期”来获取不同时区的时间,但失败了。我在谷歌上找到的所有方法都涉及更改系统上的时区,但这不是我想要的。
是否有一个命令可以在与我自己的时区不同的时区中返回当前时间?
我想查看一个带有 awk/grep 的文本文件,它在第一列中包含一个 Unix 时间戳。如何在查看时将其转换为人类可读的时间?
我的脚本有两个问题,用于复制文件并向名称添加时间戳。
cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%T")
Run Code Online (Sandbox Code Playgroud)
以上添加Test2为文件名,但我希望它保留原始源文件的文件名,在本例中名为Test.
cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%r")
Run Code Online (Sandbox Code Playgroud)
另一个问题是,当我添加%r时间戳代码时,我收到错误消息,指出目标“PM”不是目录。我试图将时间戳记为 12 小时制。
date -d "115 years ago"\nDi 11. Aug 13:37:54 CET 1908\nRun Code Online (Sandbox Code Playgroud)\ndate -d "116 years ago"\ndate: invalid date \xe2\x80\x98116 years ago\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n115 years过去或未来5879565 years?date -d "200 years ago 14 Mar "突然就可以工作了呢?我知道如何以纪元格式获取文件的 mtime:
stat --format=%Y <file>
Run Code Online (Sandbox Code Playgroud)
但我一直无法弄清楚如何以纪元格式设置文件的 mtime。touch(1) 手册页似乎只接受“时间戳”值(使用月、天、小时、分钟等的或多或少的固定格式)或“大多数自由格式的人类可读日期字符串”。
我应该研究其他实用程序吗?
谢谢。
timestamps ×10
date ×4
files ×3
shell ×2
shell-script ×2
archive ×1
awk ×1
bash ×1
command ×1
command-line ×1
date-utility ×1
file-copy ×1
macos ×1
tar ×1
timezone ×1
touch ×1