热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Unix中使用ls-lsh命令仅输出文件大小

本文探讨了如何使用ls-lsh命令排除总大小输出,仅显示文件大小的方法,并提供了几种实现这一目标的解决方案。

我正尝试使用ls -lsh命令仅将文件大小输出到文件中,但该命令还会显示总的大小信息。我希望输出的结果类似这样:

期望输出:
./sample.txt 4.0K
./multisample.txt 4.0K

然而,实际输出却是:
total 8.0K
./test.txt 4.0K
./multitest.txt 4.0K


为了达到预期的输出格式,即每行显示一个文件名及其对应的文件大小(以制表符分隔),您可以尝试以下几种方法:


解决方案


#1 使用stat命令


最直接的方法之一是使用stat命令,它可以提供文件的详细信息,包括大小。此方法返回的是字节单位的文件大小:


stat -c '%n	%s' $LISTNAME

这里,$LISTNAME是一个包含文件名列表的变量。如果文件名中可能包含空格或制表符,但不含换行符,可以使用以下方式处理:


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

这种方法适用于Bash shell,尤其是版本4及以上。


#2 使用awk过滤输出


如果您的文件名中不会包含空格等特殊字符,可以通过awk命令来过滤掉total行:


ls -1sh | awk '!/^total / { print $2 "\t" $1 }'

对于包含空格或其他特殊字符的文件名,建议使用Perl或Python脚本来实现更精确的控制。


#3 利用du命令


假设使用Bash且文件系统支持GNU工具,可以结合du命令来获取文件大小:


files=(); for f in *; do [[ -f "$f" ]] && files+=("$f"); done
while IFS= read -r -d '' line; do
filename=${line#*"$'\t'"}
size=${line%%"$'\t'*"}
printf '%q\t%s\n' "$filename" "$size"
done <<(du -0sh --apparent-size "${files[@]}")

上述脚本使用printf %q确保即使文件名中含有空格、制表符或换行符,也能正确输出。若需直接输出这些字符,可将%q替换为%s


#4 简单的lsawk组合


最后,如果您只需要一个简单的解决方案,可以尝试:


ls -lh | awk '{print $9 "\t" $5}'

以上方法均能帮助您实现仅输出文件大小的目标,选择适合您具体需求的一种即可。


推荐阅读
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • Git支持通过自定义钩子来扩展其功能,这些钩子根据触发条件的不同,可以分为客户端和服务器端两种类型。客户端钩子通常与本地操作相关联,如提交代码或合并分支;而服务器端钩子则与远程仓库的交互有关。 ... [详细]
  • 在Android应用开发过程中,经常需要在SQLite数据库中快速插入大量数据。本文通过实例探讨了不同插入方法的效率,并提供了优化建议。 ... [详细]
  • Android Studio 中 Activity 组件详解
    本文介绍了 Android 开发中 Activity 的基本概念、生命周期、状态转换以及如何创建和管理 Activity。通过详细的解释和示例代码,帮助开发者更好地理解和使用 Activity。 ... [详细]
  • 开发笔记:Python:GUI之tkinter学习笔记1控件的介绍及使用
    开发笔记:Python:GUI之tkinter学习笔记1控件的介绍及使用 ... [详细]
  • 原作者:小甲鱼(注:最左边是文件头的偏移量。)IMAGE_DOS_HEADERSTRUCT{+0hWORDe_magicMagi ... [详细]
  • 目录介绍01.CoordinatorLayout滑动抖动问题描述02.滑动抖动问题分析03.自定义AppBarLayout.Behavior说明04.CoordinatorLayo ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 使用清华大学镜像源安装Setuptools与Pip
    本文介绍了如何通过清华大学的Python镜像源安装Setuptools和Pip,包括详细的步骤和可能遇到的问题解决方法。 ... [详细]
  • 本文将探讨从ASP.NET 1.1到2.0期间编译系统的重要变革。通过对比两个版本的即时编译模型,我们将揭示2.0版本中引入的新特性和改进之处。 ... [详细]
  • 本文介绍了两种使用Java发送短信的方法:利用第三方平台的HTTP请求和通过硬件设备短信猫。重点讲解了如何通过Java代码配置和使用短信猫发送短信的过程,包括必要的编码转换、串口操作及短信发送的核心逻辑。 ... [详细]
  • 面临考试压力,急需解决四个编程问题,包括实现乒乓球的动态效果、计算特定日期是一年的第几天、逆序输出数字以及创建弹出菜单。每个问题的解决都能在TC3.0环境中获得50分。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 本文详细介绍了使用NumPy和TensorFlow实现的逻辑回归算法。通过具体代码示例,解释了数据加载、模型训练及分类预测的过程。 ... [详细]
  • 本文介绍了如何在VB.NET版机房收费系统中实现数据从DataGridView导出至Excel的功能,包括环境配置、代码实现及常见问题解决方法。 ... [详细]
author-avatar
穆羽默然
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有