使用 If 和 For 删除零大小文件的 Shell 脚本
我们系统中有许多文件作为临时文件对我们没有用。所以我们需要清除所有这些文件,但是找到每个文件并删除它们是非常忙碌的。在这里,我们将创建一个脚本,该脚本将自动搜索大小为零的文件并将其全部删除。
在开始之前,我们将了解如何搜索目录。
搜索当前目录以列出名称以大写开头的目录。
# find . -type d -name "[A-Z]*" -ls
代码的方法:
- 创建一个终端用户界面,它将询问将删除空文件的目录名称表单。
- 然后使用代码中解释的“-d”等文件运算符检查输入目录是否存在。
- 然后使用一种方法在给定目录中搜索零大小文件。我们将在这里使用上面解释的“find”命令来做同样的事情。
- 由于我们现在拥有所有大小为零的文件的列表,我们可以使用 for 循环删除它们。因此,我们已经实现了我们的目标。
下面是实现:
#!/bin/bash
echo "Enter the Directory for which all the zero sized files will be deleted:"
# input directory name.
read dirName
echo "For $dirName all 0 Sized files will be deleted."
# variable to store all the zero size files name.
# to store command output in variable we have two syntax 1. var=$(command) 2. var='command'
dire = $(find . -type f -size 0)
# first check if directory exist.
# -d is the file test operator which check the directory if it exits or not.Return true for existing.
if [ ! -d $dirName ];
then
echo "This is an invalid directory name or the Name directory does not exist."
else
# for loop iterate on the filenames with zero size.
for fileName in $dire
do
# to remove a file whose name starts with "-" we use option "--".
rm -- $fileName
done
fi
使用 touch 命令在您的目录中创建一些空文件。触摸命令将文件名作为参数。
# touch file1.txt file2.txt file3.txt
授予使脚本可执行的权限。
# chmod 777 deleteFile.sh
现在运行脚本并给出目录名称,这里我们使用当前目录 (.)。
# ./deleteFile.sh