检查文件夹中是否有空文件

检查文件夹中是否有空文件

我有一个脚本,每次从 FTP 服务器下载 17 个文件,但有时由于某些原因,某些文件的重量为“0”。

所以我正在寻找一个 bash 脚本来检查是否有任何大小为零的文件。

我怎样才能做到这一点?

编辑:我想使用 if-else 语句:如果有任何 0 字节文件,我将不得不再次运行 bash 脚本。

答案1

如果您只想列出 0 字节文件,您可以使用find

使用示例find

$ find . -type f -size 0b
./4.txt
./5.txt
./6.txt

使用的优点find是您可以轻松地通过管道xargs对文件执行所需的操作(例如删除它们),这比使用循环容易得多for

如果您在找到这些文件后想要对其进行处理,例如删除所有 0 字节文件(同时考虑奇怪的文件名),我会执行以下操作:

$ find -type f -size 0b -print0 | xargs -0I file rm -v file
removed ‘./4.txt’
removed ‘./5.txt’
removed ‘./6.txt’

此外,还有另一种选择,即以人类可读的格式列出目录中的所有文件及其文件大小,使用du -h

使用示例du

$ du -h *
1.0K    1.txt
1.0K    2.txt
1.0K    3.txt
0       4.txt
0       5.txt
0       6.txt

编辑: 只要您知道如何找到空文件,您就可以通过多种方式执行其他操作。以下示例可能不是执行此操作的最佳方式,但如果您确实在寻找语句if/else,那么您可以执行如下操作:

#!/bin/bash

for i in *; do
  if [[ $(du -h "$i" | awk '{print $1}') = 0 ]]; then
    echo "$i is empty."
  else
    echo "$i is not empty."
  fi
done

返回:

1.txt is not empty.
2.txt is not empty.
3.txt is not empty.
4.txt is empty.
5.txt is empty.
6.txt is empty.

相关内容