ls命令:仅显示时间( 以iso格式)

分享于 

4分钟阅读

ubuntu

  繁體 雙語

问题:

我找到了一种以iso格式显示日期的方法: 如何生成 ISO 8601格式文件

现在我只想显示时间,而不是前面的列:


ls --time-style=long-iso -l


drwxr-xr-x 11 foo foo 4096 2018-03-06 14:17 mydir



如何使输出看起来像这样?


2018-03-06 14:17 mydir



首选不带 cut/grep/sed/awk/tr的解决方案。


回答 1:

你可以用cut轻松地完成这项工作。


hostname$ ls --time-style=long-iso -l | cut -f 6- -d""


2019-02-06 02:57 Desktop/


2019-02-07 02:08 Documents/


2019-02-08 04:02 Downloads/


2019-01-29 04:04 Pictures/


2018-12-15 13:35 VirtualBox VMs/


2019-02-08 03:34 custom-repo/



在评论中,这只在某些情况下有效。 但我认为这是你可以用 awk 做的,也可以是( 我无法声明为 awkspert: - ),但是我甚至接近了这个awk解决方案。


hostname$ ls --time-style=long-iso -la | awk '{print $6, $7, $8, $9}'


Jan 29 08:34. xinitrc


Dec 17 17:55. xinitrc.bkp


Feb 8 04:21. zcompdump


Feb 8 04:58. zdirs


Oct 11 16:51. zprofile


Dec 10 10:17. zsh_history


Feb 7 01:48. zshrc.local


Feb 6 02:57 Desktop/


Feb 7 02:08 Documents/


Feb 8 04:02 Downloads/


Jan 29 04:04 Pictures/


Dec 15 13:35 VirtualBox


Feb 8 03:34 custom-repo/



这似乎与评论中给出的条件相符


回答 2:

你不能单独用 ls。 但是 find 有一个 -printf 操作,允许定制输出。 查看手册,特别是关于的部分。


me@ubuntu:~> find. -maxdepth 1 -printf '%TY-%Tm-%Td %TH:%TM %fn'


2019-02-07 11:25. 


2019-02-05 18:58 foo.txt


2019-02-05 17:40 bar.txt


2019-01-22 16:47 other.file


2019-02-05 16:42 README.txt



这里 %TY 表示文件时间修改的年份。%Tm的月份等等。 %f 是文件名 -maxdepth 1 避免递归。


回答 3:

你可以使用 stat -c"%y %n",它的输出与你想要的非常接近,但是不需要进一步处理,它就不完全相同,e.g.:


$ stat -c"%y %n" *


2019-02-08 00:36:58.025402641 +0100 file.docx


2019-02-08 00:36:55.845416494 +0100 file.txt


2019-02-02 16:50:59.572351725 +0100 test



若要删除秒和时区部分,可以使用 sed,如下所示:


$ stat -c"%y %n" * | sed 's/:[^:]*+[0-9]*//'


2019-02-08 00:36 file.docx


2019-02-08 00:36 file.txt


2019-02-02 16:50 test



如果你希望在不依赖文本处理的情况下进行合理的,你应该使用 date。 注意,这对处理的每个文件/目录都调用 statdate 一次,这不是有效的。


$ for i in *; do printf '%s %sn'"$(date -d@$(stat -c%Y"$i") +'%F %R')""$i"; done


2019-02-08 00:36 file.docx


2019-02-08 00:36 file.txt


2019-02-02 16:50 test




回答 4:

ls --time-style=+%Y-%m-%d

应该能很好地工作,也可以使用不同的日期修饰符

这是根据 man ls


show times using style STYLE: full-iso, long-iso, iso, locale, or +FORMAT;





COM  for  COMM  form  时间  Comma