LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1330|回复: 16

如何删除小于特定大小的文件?

[复制链接]
发表于 2003-8-9 18:13:09 | 显示全部楼层 |阅读模式
怎样截取一下得到文件大小并使他转化为整形可以进行比较呢?
请大家给点提示。

for i in *
a=`du $i`
处理一下a,使去掉多余的部分并转化为整形。
if a< 某个大小
then rm $i
...
发表于 2003-8-9 18:30:24 | 显示全部楼层
这样试试看;)
  1. for i in $(ls -l|awk '$5<200 {print $9}'); do rm $i; done
复制代码
其中200是指定的特定大小.
发表于 2003-8-9 18:51:54 | 显示全部楼层
cat del

#!/bin/bash
for i in *
do
a=`du $i|awk '{print $1}'`
if [ $a -lt SIZE ];then
rm -f $i
fi
done

试试看  我没试过
发表于 2003-8-9 19:01:13 | 显示全部楼层
呵呵~~~~~

  我写的时候被斑竹教了
 楼主| 发表于 2003-8-9 22:28:44 | 显示全部楼层
第一个行!
请教$5和$9各代表什么?
如果能输入脚本时指定大小就完美了。
如脚本名为del
./del 200
但把200替换为$1却不起作用,不知道哪里错了?
发表于 2003-8-10 00:18:42 | 显示全部楼层
  1. #!/bin/ksh
  2. #
  3. for i in $(ls -l|awk '$5<'$1' {print $9}'); do rm $i; done
复制代码
$5代表ls -l后文件的大小,$9则代表文件名,
这里的'$1'表示脚本的第一个参数.
,为了给你实验,我目录下的小于200字节的文件都被rm啦~~,幸亏有备份!
发表于 2003-8-10 10:31:12 | 显示全部楼层
到了awk里$1就变成别的意思了。
你应该先存起来
SIZE=$1
for .....

最初由 sprayvoice 发表
第一个行!
请教$5和$9各代表什么?
如果能输入脚本时指定大小就完美了。
如脚本名为del
./del 200
但把200替换为$1却不起作用,不知道哪里错了?
发表于 2003-8-10 10:38:29 | 显示全部楼层
我的错在那儿阿~~~~  请斑竹指点~~~~

我忘了说了 我改了一下的  那个a后面多了个"  '  ".
 楼主| 发表于 2003-8-10 13:40:09 | 显示全部楼层
完美!
万分感谢!
 楼主| 发表于 2003-8-10 16:45:45 | 显示全部楼层
#!/bin/bash
for i in $(du * | awk '$1<'$1' {print $2}'); do rm $i; done

看了一下awk的tutorial,终于明白$1,$2等在awk中代表什么意思了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表