linux - Unix 中 ls -lsh 中的“总计”

标签 linux bash unix awk ls

我正在尝试使用 ls -lsh 命令仅将文件大小输出到文件。但它也显示总数。 我需要这样的东西:

。 ./sample.txt 4.0K
./multisample.txt 4.0K

但显示如下:
。 ./test.txt ./multitest.txt
4.0K
4.0K

.:
总计
4.0K
4.0K
4.0K
我用过的命令是: ls -lsh $LISTNAME |awk '{print $1}' >>/home/test/$date.log
其中 $LISTNAME 包含文件名。
请让我知道如何只显示文件大小以及我需要的格式(文件名 1 tab filesize 和下一行 filename2 tab filesize)

最佳答案

Don't parse ls .

最好的方法是:

# this assumes your filenames don't contain whitespace
stat -c $'%n\t%s' $LISTNAME

如果 $LISTNAME 是以换行符分隔的文件列表,这将在文件名中包含空格和/或制表符,但不包含换行符。假设 bash(我认为是第 4 版)

mapfile -t files <<<"$LISTNAME"
stat -c $'%n\t%s' "${files[@]}"

关于linux - Unix 中 ls -lsh 中的“总计”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29421768/

相关文章:

java - 由于 jar 文件,Cygwin 终端在运行 .sh 文件时出错

linux - 无法从android中的用户空间打开设备节点

linux - 如何查明是什么在夜间从我的 Linux 启动端口扫描?

Java 日志记录 : multiple small file vs one big

macos - $PATH 是否需要子目录

bash - Powershell 中的 CDPATH 功能?

ruby-on-rails - Capistrano 使用 sudo 执行命令,尽管它已关闭

.net - 在 Linux 上构建面向 .NET Framework 的 NuGet 包

linux - 无法将输出重定向到/var/lib/varlibfile,但我可以将varlibfile复制到/var/lib

linux - 我需要计算文件中第一个字段中的符号数量,并将它们与另一个字段相加