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

来源:百度知道 编辑:UC知道 时间:2024/06/04 11:10:08
老师的苛求不让用未学过的命令 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的

加入 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."

没测试, 呵呵, 自己做些空档案和空目录测试一下吧

== 淘宝有抢购活动 过了八点给你八点给你想个法子不用find 不用 | 好办

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