Answers:
ls -l | awk '{print $5, $6, $7, $9}'
这将以字节,月,日期和文件名打印文件大小。
jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 bar
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 baz
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 quux
jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
从技术上讲,这是不可能的ls
,但find
可以通过其-printf
开关执行相同的工作:
find -maxdepth 1 -printf '%t %s %p\n'
find usr/lib/ -not -type d -printf '%M %p\n
输出: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so
...教男人钓鱼以及所有这些……
您可以随时这样做:
$ ls -l
total 0
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file1
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file2
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file3
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file4
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file5
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file6
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file7
cut
它到:
$ ls -l | cut -f 8-13 -d ' '
0 Oct 6 23:29 file1
0 Oct 6 23:29 file2
0 Oct 6 23:30 file3
0 Oct 6 23:30 file4
0 Oct 6 23:30 file5
0 Oct 6 23:30 file6
0 Oct 6 23:30 file7
$
ls -l
使用空格填充。如果您的列长度不一致(第5列,文件大小通常不一样),则cut不会正确选择列。折叠连续的空格会有所帮助(请注意文件名中的空格)。ls -l | tr -s ' ' | cut -f 8-13 -d ' '
另一种ls
方式:
> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200 10485760 tmp.1 |
2017-06-15 10:41:25.659570000 +0200 666 tmp.TKPzm3BfRw |
说明:%y
=可读的修改日期;
%s
=以字节为单位的大小(%12s
右对齐,长度为12);
%n
=文件名(%-16n
左对齐,长度16);\t
=标签,\n
=换行符。|
=文字管道字符,仅显示文件名的末尾。
像一样ls
,stat
没有选择要显示哪些文件的选项。(例如,可以通过上面所示或某些find ... -print0 | xargs -r0 stat ...
示例的外壳globbing来完成。)
stat -f '%N %Sm %z' filename
tolitius的轻微变化
ls -lh | cut -f 6- -d ' '