我尝试从
ls -l
命令的输出中删除除修改日期、修改时间和名称之外的所有列。
drwxr-xr-x 5 john staff 160 May 16 01:59 some-folder
-rw-r--r--@ 1 john staff 759704 Apr 14 04:05 some-file.png
下面的命令几乎就是我想要的,只不过它留下了第二列,即整数 5 和 1。
ls -goh | sed -re 's/^[^ ]* //'
我已经尝试自己修复它,这是其中的尝试之一,
ls -goh | sed -re 's/^[^ ]* *\d* //'
但是好像
sed
正则表达式和我以前一直用的有点不一样。
我需要如何更改正则表达式以仅显示修改日期、修改时间和名称列?
--
查看评论,当前
awk
输出:
28M Mar 29 12:03 foo.dmg
96B Feb 9 15:33 bar.app
128B May 16 01:59 aaa
160B May 16 01:59 bbb
保留列会更好:
28M Mar 29 12:03 foo.dmg
96B Feb 9 15:33 bar.app
128B May 16 01:59 aaa
160B May 16 01:59 bbb
这是一个
awk
命令,可确保所有文件实际上具有完整的日期和时间信息,并更好地处理其中也包含空格的文件名:
ls -goh --time-style=long-iso | awk '{filename = ""; for (i=6; i<=NF; i++) filename=filename $i " "; printf "%-10s %-5s %s\n", $4, $5, filename}'