shell 不用find,如何删除当前文件夹及其子文件夹所有空文件

老师的苛求不让用未学过的命令find和管道都没有学过已经做出来了删除本文件夹下所有空文件可是需要做子文件夹下小弟迷茫请教前辈们#!/bin/shm=0n=0forvide... 老师的苛求不让用未学过的命令 find和管道都没有学过
已经做出来了删除本文件夹下所有空文件
可是需要做子文件夹下 小弟迷茫 请教前辈们
#!/bin/sh

m=0
n=0
for vide in *
do
if test -f $vide
then
if test -s $vide
then
echo "$vide isn't a empty file"
else
rm "$vide"
if test $? -eq 0
then
m=`expr $m + 1`
echo "$vide deleted!"
else
echo "$vide delete failure!"
n=`expr $n + 1`
fi
fi
fi
done
echo "$m empty file(s) deleted!"
echo "$n empty file(s) delete failure"

大概就是这种形式 已经做出了删除当前目录中的空文件 可惜子文件夹实在没思路

回gurite:shell sh的
展开
 我来答
七家生0D
2009-09-27 · TA获得超过1944个赞
知道小有建树答主
回答量:1675
采纳率:0%
帮助的人:1270万
展开全部
== 淘宝有抢购活动 过了八点给你八点给你想个法子不用find 不用 | 好办

=========================
想好了 只要递归就行了
#!/bin/bash
for filename in *
do
#这里判断是不是目录,如果是目录就进去递归操作,注意递归的时候脚本名称要打上完整的路径
if [ -d "$filename" ]
then
cd "$filename"
bash ~/bash/tmp/tmp.sh
fi

原来的删除操作内容

done

大概是这样 在你的脚本上面加上这段就行了
不能删除空目录。

递归效率一般,如果要用别的方法考虑了下也行但是可能要用到sed或者awk什么的命令,我想find都不让用估计这些也不让用

ps 另外我试了试我用-s就判断不出来 奇怪
我建议还是用 ls -l 取出来第五列看看是不是0,是不是比较稳妥?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twfcc
2009-09-27 · TA获得超过722个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:507万
展开全部
加入 rmdir 命令, 给些思路

rmdir 只拆删除空目录,有东西它不删除

#! /bin/bash
x=0
y=0
for i in /somewhere/* # 改为适合的 path
do
if [ -f "$i" ] && [ ! -s "$i" ]
then
rm -f "$i"
((x++))
elif [ -d "$i" ]
then
is_empty_dir=$(ls "$i") # 测试是否有文件,目录
[ -z "$is_empty_dir" ] && rmdir "$i" && ((y++))
else
echo "$i is not empty file or directory,skipped."
fi

done

echo "$x empty file(s) and $y empty director(y|ies) deleted."

没测试, 呵呵, 自己做些空档案和空目录测试一下吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gurite
2009-09-27 · TA获得超过3793个赞
知道大有可为答主
回答量:4681
采纳率:50%
帮助的人:2701万
展开全部
嘛语言?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式