ls 只显示目录/文件名和大小

Cyc*_*one 5 command-line ls freebsd tcsh

首先,这不是重复的:Linux ls to show only filename date and size

因为我想另外打印实际的目录名称。

我一直在使用这个命令:

ls -l | awk '{print $5, $9}'
Run Code Online (Sandbox Code Playgroud)

获取每个文件的大小和名称。

但是现在,我需要另外打印文件目录。就像当前目录是 一样/path/to/somewhere,我想要:

somewhere/file 1234
somewhere/other-file 4567
Run Code Online (Sandbox Code Playgroud)

而不是仅仅

file 1234
other-file 4567
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Use*_*ess 6

你的意思是这样,只是在每个文件名前加上当前目录?

ls -l | awk '{printf("%s %s/%s\n", $5, ENVIRON["PWD"], $9); }'
Run Code Online (Sandbox Code Playgroud)

或者是其他东西?


好的,显然你想要的是

$ cd /some/path/to/somewhere
$ <insert command here>
somewhere/file1 size1
somewhere/file2 size2
...
Run Code Online (Sandbox Code Playgroud)

正确吗?

如果是这样,您需要的更改(假设是 POSIX shell)是这样的:

ls -l | DIR=${PWD##*/} awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
Run Code Online (Sandbox Code Playgroud)

反而。

在 中tcsh,正如您的Illegal variable name错误表明您正在使用的那样,您将使用:

ls -l | env DIR=$PWD:t:q awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
Run Code Online (Sandbox Code Playgroud)

反而。


如果它仍然不起作用,请在您的问题中描述您的平台、shell、awk 版本等 - 评论线程变得很长,我的猜测用完了:-)