Linux ls仅显示文件名日期和大小


71

我如何ls在Linux中使用以仅获取文件名日期和大小的列表。我不需要查看其他信息,例如所有者或权限。这可能吗?


1
ls之所以很棒,是因为它可以按日期时间快速排序,但是格式却很难处理。我建议在--time-style处使用标记,例如--time-style='+&%Y%m%d+%H%M%S.%N'标记为“&”,使用该标记作为参考,您可以进一步解析输出,sed因此也可以像标记大小之前一样回溯!如果有人希望将其作为完整的答案发布,请放心,我现在睡着了:)
Aquarius Power

Answers:


98

为什么不使用stat代替ls

stat -c "%y %s %n" *

1
很好,但是确实存在“环境太大” /“参数列表太长”的问题。

4
:-)只是概念的证明。在真实生活中[tm]这将是find . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8 2011年

5
要格式化的输出stat,您可以将宽度信息添加到像C printf函数这样的格式字符串中,例如"%y %8s %n",它没有记录,但是看起来可行(coreutils 8.17,Fedora 18)
LiuYan刘研

因为ls我可以用千位分隔符输出。它是如何工作的stat
Al Bundy

我看不出这如何回答问题?!这是一个不错的即用型解决方案,但是您会失去的所有好处ls。颜色呢?
MS Berends

29

您可以使用该find实用程序对如何列出文件进行很多控制。ls并没有真正让您指定所需的列。

例如:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

该操作的参数printf在手册页中有详细说明。您可以选择不同的时间信息,所需的大小(使用的文件大小或磁盘块)等。如果需要进一步处理,还可以对不寻常的文件名进行安全设置。


查找上方的输入('%CY%Cm%Cd。%C ...')长。至少GNU find具有%C+(输出“ 2016-08-29 + 10:57:56.9201257840”)和%Cc(输出“ Mo 2016年8月29日10:57:56 CEST”)
guettli

希望这对Mac有用。
Jerinaw

很可爱,如果您只想打印完整的路径和大小,这应该可以“查找/ path / to / -printf'%h /%f%s \ n'”
Pierluigi Vernetto

24

您总是可以使用另一个实用程序awk来格式化ls1的输出:

/bin/ls -ls | awk '{print $7,$8,$9}'


1,是的,通常不应该解析ls的输出,但是在这种情况下,这个问题特别需要它...


那不会打印文件大小。并且仅打印文件名的第一部分,其中包含空格。如果使用ls别名(例如alias ls='ls -i'),它可能会失败。如果要解析ls输出,则确实应该多加注意。

我在其中保存了文件大小,然后对其进行了编辑(模糊的时间)-我将还原它。我同意重新解析所有警告ls,但这就是OP想要的...
jasonwryan 2011年

我不同意,OP需要文件名,而不是文件名的第一部分(如果文件名恰好有空格)。(/bin/ls这样可以避免别名问题。)

这是隐含的理解:明确声明的是OP希望ls我们都同意的解决方案不能满足空白要求。这个/bin/ls建议是一个好建议。
jasonwryan 2011年

喜欢这个解决方案;关于以前关于不打印尺寸的评论,您可以使用ls来获得尺寸,并可以-h使其变得易于阅读。我特别使用了: ls -lah | awk '{print $5,$6,$7,$8}'产生: 4.0K Jan 24 18:17。当然,原始解决方案没有说明任何有关awk的信息,但是在linux中,我们应该假定一个进程的输出始终是另一个进程的输入,对吗?;)
abgordon

5

您也可以使用“日期”命令。这是非常容易使用:

日期-r [文件名]


很好,这对我来说是新的。不幸的是,它不适用于通过globbing的多个文件:date -r foo*.txt->date: extra operand "foo2.txt"
guettli

4

如果您希望使用ls,但保留适当的大小,则可以使用:

ls -Ss1pq --block-size=1

1

其中空间定义为分隔符,而f6表示字段6

ls -lt | cut -d" " -f6-

2
它失败是因为ls使用空格进行缩进,有时它是-f6-其他时候是-f5-
Aquarius Power

1

您可以通过管道传递两个命令

ls -l|cut -d" " -f5

1
它失败是因为ls使用空格进行缩进,有时它是-f6-其他时候是-f5-
Aquarius Power

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.