LinuxSir.cn,穿越时空的Linuxsir!

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

如何判断目录是否为空?(内空)

[复制链接]
发表于 2003-11-12 16:01:35 | 显示全部楼层 |阅读模式
rt
发表于 2003-11-12 16:27:54 | 显示全部楼层
由于我们知道我们每次新建立一个目录的时候用du -sh看他总是4.0K,所以可以根据这条线索来判断!
  1. [/home/javalee/myshell]for i in $(ls -l|grep ^d|awk '{print $9}')
  2. > do
  3. > du -sh $i
  4. > done|awk '/4.0K/{print $2}'
复制代码
发表于 2003-11-12 16:58:38 | 显示全部楼层
find / -type d -empty
发表于 2003-11-12 17:31:28 | 显示全部楼层
最初由 r2007 发表
find / -type d -empty

佩服~~ 还是find好使!
 楼主| 发表于 2003-11-12 17:52:56 | 显示全部楼层
多谢指点
发表于 2003-11-12 18:20:30 | 显示全部楼层
最初由 r2007 发表
find / -type d -empty


这样是列出所有的子目录,列出当前目录的空目录怎么办?
发表于 2003-11-12 18:31:43 | 显示全部楼层
我再用ls写的一个,跟find的结果有差异!
  1. #!/bin/ksh
  2. for i in $(ls -aR|grep "^\./"|tr -d ":")
  3. do
  4. echo -n $i;ls $i|wc -c
  5. done|awk '$2==0{print $1}'
复制代码
:ask
发表于 2003-11-12 18:31:49 | 显示全部楼层
把javalee兄 和 r2007兄的结合起来不就可以了吗》???
发表于 2003-11-12 19:06:31 | 显示全部楼层
最初由 javalee 发表
由于我们知道我们每次新建立一个目录的时候用du -sh看他总是4.0K,所以可以根据这条线索来判断!
  1. [/home/javalee/myshell]for i in $(ls -l|grep ^d|awk '{print $9}')
  2. > do
  3. > du -sh $i
  4. > done|awk '/4.0K/{print $2}'
复制代码

:sorry,这行脚本是经不起推敲的!
  1. #!/bin/ksh
  2. for i in $(ls -aR|grep "^\./"|tr -d ":")
  3. do
  4. echo -n $i;ls $i|wc -c
  5. done|awk '$2==0{print $1}'
复制代码
这个脚本比r2007兄的find命令也有些差异:ask
发表于 2003-11-12 21:27:06 | 显示全部楼层
最初由 home 发表
这样是列出所有的子目录,列出当前目录的空目录怎么办?


find -type d -empty -maxdepth 1

老大的ls方案,和find有差别,其中这一句
echo -n $i;ls $i|wc -c
将含有类似 .bash_profile等隐藏文件的目录也算成空目录了
试做如下调整
#!/bin/bash
for i in $(ls -aR|grep "^\./"|tr -d ":")
do
echo -n $i;ls -a $i|wc -w
done|awk '$2==2{print $1}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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