如何查找包含子目录的目录中的所有零字节文件

Civ*_*iva 68 linux shell

如何在目录甚至子目录中找到所有零字节文件?

我这样做了:

#!/bin/bash
lns=`vdir -R *.* $dir| awk '{print $8"\t"$5}'`
temp=""
for file in $lns
do
  if test $file = "0"
  then
    printf $temp"\t"$file"\n"
  fi
 temp=$file
done
Run Code Online (Sandbox Code Playgroud)

但我只得到该目录文件中的结果而不是所有文件,如果任何文件名有空格,那么我只得到第一个单词后跟tab

谁能帮我?

Wil*_*ell 150

要打印大小为0的$ dir中和以下的所有文件的名称:

find "$dir" -size 0
Run Code Online (Sandbox Code Playgroud)

请注意,并非所有实现find都会默认生成输出,因此您可能需要执行以下操作:

find "$dir" -size 0 -print
Run Code Online (Sandbox Code Playgroud)

  • 还有一个方便的`-empty`选项. (2认同)
  • @IgorScabini如果你想限制文件,你可以使用“-type f”来实现。 (2认同)

Lin*_*igi 30

作为上述答案的补充:

如果您想删除这些文件

find $dir -size 0 -type f -delete
Run Code Online (Sandbox Code Playgroud)


小智 7

不,你不必打扰grep.

find $dir -size 0 ! -name "*.xml"
Run Code Online (Sandbox Code Playgroud)


Mik*_*e Q 5

Bash 4+ 已测试 - 这是搜索大小 0 的正确方法:

find /path/to/dir -size 0 -type f -name "*.xml"
Run Code Online (Sandbox Code Playgroud)

搜索大小为 0 的多个文件扩展名:

find /path/to/dir -size 0 -type f \( -iname \*.css -o -iname \*.js \)
Run Code Online (Sandbox Code Playgroud)

注意:如果删除 \( ... \),结果将是满足此要求的所有文件,因此忽略大小 0。