显示大于0的文件内容

时间:2017-09-01 19:07:54

标签: linux bash shell

我需要编写一个shell脚本。 我在目录中有大量文件。从那里,我需要显示大小超过0字节的文件的内容。并删除大小为0的文件。

请帮忙。提前谢谢。

4 个答案:

答案 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"改为命令