从目录中删除零大小文件的 Shell 脚本
零大小文件是不包含任何数据且长度为 0 的文件。它也称为零字节文件。不完整的传输可能是导致文件大小为零的原因。您可以通过在终端中运行以下命令来有意创建一个零大小的文件:
touch zero_sized_file_name
输出:
方法:
- 输入目录名称并检查该目录是否存在于当前文件夹/目录中。
- 使用 for 循环遍历每个文件并检查它们的大小。
方法一:
步骤包括:
- 首先,我们使用 read命令将目录名称作为用户的输入。
- 为了检查用户输入的目录名是否真的存在,我们使用 if [-d “$directory_name”]语句。这里我们使用带有 -d标志的 if语句,如果目录存在,它将返回 true。
- 如果目录存在,那么我们将使用循环 语句( for循环)迭代文件并使用-size 0检查它们的大小,如果文件大小为零,那么我们进入循环并使用rm命令删除文件。 rm (remove) 用于删除文件/文件夹。
- 之后,我们使用 echo命令显示文件已成功删除。 echo 就像一个打印语句,用于在屏幕上显示内容。
- 如果目录不存在,我们将显示不存在的目录。
#! /bin/bash
# Taking directory name as input from user
echo -n "Enter name of the directory : "
read directory_name
# If directory exists it will print
# Directory exits
# and remove the zero-sized files.
# Or if directory doesn't exists it will print
# Directory does not exists.
if [ -d "$directory_name" ];
then
echo "Directory exist"
for i in `find $directory_name -size 0`
do
rm $i
echo "Zero-sized files are Successfully deleted"
done
else
echo "Directory does not exist"
fi
方法二:
步骤包括:
- 首先,我们必须使用目录名称作为用户的输入 读取命令并将其存储在变量directory_name 中。
- 为了检查用户输入的目录名是否真的存在,我们使用if [-d “$directory_name”]语句。这里我们使用带有-d标志的 if 语句,如果目录存在,它将返回true。
- 如果目录存在,那么我们将使用循环语句(for 循环)迭代文件并使用-size 0检查它们的大小,一旦我们找到满足我们要求的文件(即文件大小为零),使用-delete参数,我们将从该目录中删除该特定文件。我们做同样的事情,直到没有零大小的文件。
- 之后,我们使用 echo命令显示文件已成功删除。 echo用于在屏幕上显示内容。
- 如果目录不存在,我们只需使用 echo 命令返回不存在的目录。
#! /bin/bash
# Taking directory name as input from user
echo -n "Enter name of the directory : "
read directory_name
# If directory exist it will print
# Directory exits
# and remove the zero-sized files.
# Or if directory doesn't exist it will print
# Directory does not exist.
if [ -d "$directory_name" ];
then
echo "$directory_name Directory exist"
for i in `find $directory_name -size 0 -delete`
do
echo ""
done
echo "Zero-sized files are Successfully deleted"
else
echo "$directory_name does not exist"
fi
输出 :