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的 展开
已经做出来了删除本文件夹下所有空文件
可是需要做子文件夹下 小弟迷茫 请教前辈们
#!/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的 展开
展开全部
== 淘宝有抢购活动 过了八点给你八点给你想个法子不用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,是不是比较稳妥?
=========================
想好了 只要递归就行了
#!/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,是不是比较稳妥?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加入 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."
没测试, 呵呵, 自己做些空档案和空目录测试一下吧
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."
没测试, 呵呵, 自己做些空档案和空目录测试一下吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘛语言?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询