编写一个SHELL脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
2018-03-09 14:39
1111 查看
一、目的
编写一个脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
命令执行示例,其中和 ls -lh 命令输出的唯一区别是目录的大小:
1.1、ls -lh命令的输出(注意目录大小)
需要显示真实的目录大小,并且显示方式要与ls -lh样式一样
三、知识点
3.1、文件、目录操作知识
3.2、shell编程知识
四、思路与具体实现
4.1思路
1)首先判断是否输入参数
2)查找输入的参数所有的文件夹和文件
3)如果查找到的文件是目录类型,则通过du -sh统计目录大小,然后替换ls -lhd输出的大小,如果不是,则直接ls -lh显示。
4.2具体脚本
编写一个脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
命令执行示例,其中和 ls -lh 命令输出的唯一区别是目录的大小:
1.1、ls -lh命令的输出(注意目录大小)
[root@reedoracle ~]# ls -lh /root/dir1/ total 24M drwxr-xr-x 3 root root 4.0K Feb 6 13:54 dir2 drwxr-xr-x 2 root root 4.0K Feb 6 13:55 dir3 -rw-r--r-- 2 root root 0 Feb 6 13:53 file1 -rw-r--r-- 1 root root 23M Feb 6 13:54 file1-1 -rw-r--r-- 2 root root 0 Feb 6 13:53 lfile1 lrwxrwxrwx 1 root root 7 Feb 6 15:03 lfile2 -> file1-11.2、通过脚本实现的效果(注意目录大小)
[root@reedoracle dir1]# /root/newls.sh /root/dir1/ drwxr-xr-x 4 root root 53M Feb 6 15:03 /root/dir1/ drwxr-xr-x 2 root root 16M Feb 6 13:55 /root/dir1/dir3 -rw-r--r-- 1 root root 15M Feb 6 13:55 /root/dir1/dir3/file3 lrwxrwxrwx 1 root root 7 Feb 6 15:03 /root/dir1/lfile2 -> file1-1 drwxr-xr-x 3 root root 15M Feb 6 13:54 /root/dir1/dir2 drwxr-xr-x 2 root root 1.1M Feb 6 13:54 /root/dir1/dir2/dir2-2 -rw-r--r-- 1 root root 1.0M Feb 6 13:54 /root/dir1/dir2/dir2-2/file2-2 -rw-r--r-- 1 root root 13M Feb 6 13:54 /root/dir1/dir2/file2 -rw-r--r-- 2 root root 0 Feb 6 13:53 /root/dir1/file1 -rw-r--r-- 1 root root 23M Feb 6 13:54 /root/dir1/file1-1 -rw-r--r-- 2 root root 0 Feb 6 13:53 /root/dir1/lfile1二、难度
需要显示真实的目录大小,并且显示方式要与ls -lh样式一样
三、知识点
3.1、文件、目录操作知识
3.2、shell编程知识
四、思路与具体实现
4.1思路
1)首先判断是否输入参数
2)查找输入的参数所有的文件夹和文件
3)如果查找到的文件是目录类型,则通过du -sh统计目录大小,然后替换ls -lhd输出的大小,如果不是,则直接ls -lh显示。
4.2具体脚本
#!/bin/bash #function:new ls #author:reed Files=$1 if [ $# -eq 1 ];then for FileList in $(find $1);do FileType=$(ls -lhd $FileList |awk -F' ' '{print $1}'|cut -c 1) if [ "$FileType" == d ];then DirSize=$(du -sh $FileList|awk '{print $1}') ls -lhd $FileList|sed "s/[^ ]\+/$DirSize/5" else ls -lh $FileList fi done else echo "--usage:$0 +[directory] or [file];" echo "--example:$0 /root" fi
引用:SHELL编程练习-获得指定目录下的所有文件及文件夹的大小
相关文章推荐
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- linux中ls命令:(显示指定目录里的文件及文件夹清单)
- shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
- shell脚本查找指定目录下所有子目录中的同名文件
- shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
- PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
- 执行系统命令并且将输出写到指定日志文件的shell脚本(1)
- [置顶] win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量
- VC下读取文件夹目录 + 读取该目录下所有指定文件 + 把所有读取结果输出到CListBox并智能设置水平滚动条宽度
- Delphi 计算指定目录下所有文件的大小(遍历文件夹所有文件及目录)
- 如何读取一个文件夹下的所有图像文件,并制作负样本到指定目录
- PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
- Shell脚本实例(二) 向指定目录下不断产生指定大小的文件
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- linux下设计一个Shell脚本:判断当前工作目录下所有的文件类型。
- 编写一个shell命令脚本来交叉编译.c文件,代替Makefile
- 微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹
- 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt。
- Python 实现在对一个目录下所有文件,指定某一行之后添加内容(批处理脚本)
- Shell脚本 输出当前目录下某文件夹中的非空文件