cat testsh
#!/bin/sh
file=$1
file_size=`du $file | awk '{print $2}'`
if [ $file_size -ge 10485760 ]
then
cp -p $file $file-bak
fi
chmod +x testsh
/testsh 1txt
逐行解释
1
2
定义脚本默认用sh执行
3
将文件路径赋予file变量。$1
表示位置变量即下面的1txt
4
计算文件大小并赋予file_size变量
5
如果文件大小大于等于10m
10485760为10m,-ge为大于等于。
6
if语法关键字
7
将文件重命名备份
8
if语法关键字
9
空行
10
赋予脚本testsh可执行权限
11
执行脚本,输入位置变量1txt
这不一行命令就搞定了吗:
ls -lS | awk '{print " " }'
你可以将它保存为一个 shell 脚本。
命令运行截图
ls -lS 的作用是查看文件信息,并以文件大小降序。
awk '{print $9 " " $5}' 的作用是从这些信息中过滤出文件名和文件大小,以空格隔开。
当有新的硬件设备加载到linux系统上的时候,linux系统会自动刷新一条日志信息到dmesg里面。你可以在刚插入U盘的时候,立即执行dmesg命令,然后就能看到这个条日志记录,可以看到U盘对应的盘符。
根据这个思路,你可以通过shell脚本监控这个日志,只要有磁盘设备更新,就取得它的盘符。假设这里是/dev/sdg,获取到盘符以后,再使用命令
fdisk -l /dev/sdg
就可以输出这个磁盘的容量信息以及剩余空间的大小,通过字符串查找把对应的值提取出来即可。
基本思路就是这个,不知道我说清楚了没有,希望可以帮助到你。
find命令会递归查找,尤其适合有嵌套目录(子目录)的情况。
如果当前目录下没有子目录,只有文件,那么也可以这样处理txt文件。
for ofile in txtdo
size=`wc -c ofile | cut -d" " -f1`
[ $size -gt $((10510241024)) ] && mv $ofile /home/bak
done
以上就是关于linux shell脚本判断某个文件的大小,符合条件则备份并重命名全部的内容,包括:linux shell脚本判断某个文件的大小,符合条件则备份并重命名、设计一个shell脚本,对该文件夹下的所有文件按照大小进行排序,从大到小输出每个文件的名字和大小、如何使用shell脚本, 当U盘挂载到Linux系统上时, 自动获取U盘大小和剩余的空间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)