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

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

如何ls在 Linux 上获取仅包含名称、日期和大小的文件列表?我不需要查看其他信息,例如所有者或权限

这可能吗?

答案1

尝试stat代替ls.这里是 GNU 实现stat(注意 BSD 和 zsh 也有一个stat命令,但具有完全不同的 API):

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

以柱状格式输出(假设所有文件名都不包含逗号或换行符):

stat -c "%n,%s" -- * | column -t -s,

-请注意,如果当前工作目录中有一个文件被调用,GNUstat将报告有关在 stdin 上打开的文件的信息,而不是该文件的信息。

如果你遇到一个Argument list too long错误,对于 shells whereprintf是内置的,您可以将其更改为:

printf '%s\0' * | xargs -0 stat -c "%y %s %n" --

或者在 ksh93 中:

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

这将运行尽可能多的调用stat来解决参数大小的限制。

答案2

您始终可以使用另一个实用程序,例如格式化1awk的输出:ls

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


1.是的,一般来说,你不应解析 ls 的输出但在这种情况下,问题特别需要它......

答案3

您可以通过该实用程序的 GNU 实现对如何列出文件进行大量控制find。 GNUls并不真正允许您指定所需的列。

例如:

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

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

答案4

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

ls -Ss1pq --block-size=1

相关内容