acdbaqa@qaca010z:/tmp/joelj> ls -lrt hl.sh-rwxrwxrwx 1 acdbaqa acdba 22107月13日20:07hl.sh如何将任何文件的日期格式转换为YYYYMMDD:HHSS
kiz8lqtg1#
在你的例子中,你似乎认为2210是日期的一部分(不是,它是文件大小),而你想要的格式遗漏了分钟。如果这两个都是无意的,并且你使用的是GNU ls,the --time-style option should do what you need:
--time-style
ls -lrt --time-style="+%Y%m%d:%H%M%S"
字符串对于你的例子,它或多或少会给出给予这个结果:
-rwxrwxrwx 1 acdbaqa acdba 2210 20170713:200700 hl.sh
型
fnatzsnv2#
如果您只需要文件的修改时间,而不是ls,请考虑使用stat命令:
ls
stat
stat -f %Sm -t %Y%m%d:%H%M%S hl.sh
字符串这是日期/时间格式的长格式;它可以缩写为%F:%T。如果你没有stat,你可以使用perl:
%F:%T
perl
perl -MPOSIX -le 'print(strftime "%Y%m%d:%H%M%S", localtime((stat "hl.sh")[9]))'
型您可以在代码外部传递文件名,以避免引用/插值问题:
perl -MPOSIX -le 'print(strftime "%Y%m%d:%H%M%S", localtime((stat $ARGV[0])[9]))' hl.sh
vmjh9lq93#
我喜欢stat命令,但在Ubuntu上我不能正确使用它,所以我的答案是,它使用perl来做一些字符串操作,所以它可能被认为是一种变通方法。
ls -lrt somefiles |perl -MDate::Manip -pe 's/^([-\w]+ \d+ \w+ \w+ \d+ )(\w+ +\d+ +[:\d]+)/$1.UnixDate(ParseDate($2),"%Y%m%d:%H%M")/e'
字符串这将识别形式为%month %day %hour:%minute的日期字符串,并将其转换为所需的格式。
文件的输出:
-rwxrwxrwx 1 acdbaqa acdba 2210 20170713:2007 hl.sh
ltskdhd14#
在Mac OS上,ls -alD %Y%m%d:%H%M将执行此操作
ls -alD %Y%m%d:%H%M
-rw-r--r--@ 1 emilio staff 1001 20150530:1540 yes.gif
字符串
4条答案
按热度按时间kiz8lqtg1#
在你的例子中,你似乎认为2210是日期的一部分(不是,它是文件大小),而你想要的格式遗漏了分钟。如果这两个都是无意的,并且你使用的是GNU ls,the
--time-style
option should do what you need:字符串
对于你的例子,它或多或少会给出给予这个结果:
型
fnatzsnv2#
如果您只需要文件的修改时间,而不是
ls
,请考虑使用stat
命令:字符串
这是日期/时间格式的长格式;它可以缩写为
%F:%T
。如果你没有
stat
,你可以使用perl
:型
您可以在代码外部传递文件名,以避免引用/插值问题:
型
vmjh9lq93#
我喜欢stat命令,但在Ubuntu上我不能正确使用它,所以我的答案是,它使用perl来做一些字符串操作,所以它可能被认为是一种变通方法。
字符串
这将识别形式为%month %day %hour:%minute的日期字符串,并将其转换为所需的格式。
ls
用于一年以上文件的第二种日期格式(%month %day %year)。文件的输出:
型
ltskdhd14#
在Mac OS上,
ls -alD %Y%m%d:%H%M
将执行此操作字符串