📜  使用 If 和 For 删除零大小文件的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:28.136000             🧑  作者: Mango

使用 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