我需要编写一个shell脚本。 我在目录中有大量文件。从那里,我需要显示大小超过0字节的文件的内容。并删除大小为0的文件。
请帮忙。提前谢谢。
答案 0 :(得分:3)
我找到了一个合适的答案。但是,欢迎任何更多的投入。 答案如下。我需要在shell脚本中使用它。
find . -size 0c -delete
答案 1 :(得分:0)
这是可以运作的东西
#!/bin/bash
for f in $(ls) ; do
if [ -f $f ] ; then
if [ -s $f ] ; then
ls $f
else
rm $f
fi
fi
done
注意,它只是在当前目录中执行ls
。您还可以将目录作为arg传入以查找或其他方法。此外,这不会获取隐藏文件(.*
)。
它的工作原理的关键是Bash条件表达式-s
(如果文件大于0,则为true)和-f
(如果是常规文件,则为true)。
答案 2 :(得分:0)
显示topdir
下非零大小的所有文件的内容:
find topdir -type f \! -size 0c -exec cat {} +
删除同一目录下的所有完全空文件:
find topdir -type f -size 0c -ok rm {} \;
如果您不想确认每次移除,请将-ok
替换为-exec
(以及\;
末尾的+
)。
此解决方案假设POSIX find
。
答案 3 :(得分:-2)
for i in `ls` ; do
if [ -s $i ] ; then
cat $i
else
rm -f $i
fi
done
如果文件名中有空格,则可能需要更改IFS env变量,或者考虑使用" find"改为命令