📜  从当前工作目录上方的每个目录中删除文件的 Shell 脚本

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

从当前工作目录上方的每个目录中删除文件的 Shell 脚本

在本文中,我们将讨论如何在 Linux 中使用 shell 脚本从父工作目录上方的每个目录中删除文件。要从目录中删除文件,我们在 Linux/UNIX 中使用 rm 命令。

句法:

rm [OPTION]... [FILE]...

使用shell脚本,我们必须从当前工作目录之上的每个目录中删除输入文件。文件名将作为参数传递。下图显示了桌面目录的树结构。

在上图中,我们当前位于 /Desktop 目录中。



  • 可以使用 pwd命令查看当前工作目录。
  • 在上图中的树结构中,我们有一个 GFGfile.txt 文件。 GFGfile.txt 是一个普通的文本文件。
  • 该文件位于 GFG、AAAA、BBBB、CCCC 4 个目录中。
  • 现在我们将使用 cd进入“CCCC”目录 命令。我们将删除当前工作目录上方的另一个 GFGfile.txt。即除“CCCC”目录中的文件外,所有 GFGfile.txt 都将被删除。

方法:

  1. 初始化标志=1
  2. 将 homeDir 初始化为“/home”目录
  3. 循环直到标志变为 0,否则转到步骤 13。
  4. 使用“cd ..”命令转到上一个目录。
  5. 设置 pwd 命令以显示工作目录
  6. 使用 rm命令删除文件
  7. 如果当前工作目录等于主目录,则将标志设置为 0
  8. 转到第 7 步
  9. 停止

下面是实现。

# check whether arguments are passed or not
if [ $# -eq 0 ]
then
        # if arguments are not passed then display this
        echo "pass the file name"  
        
        # exit the program
        exit 

# end if 
fi 

# store the argument in fileName
fileName=$1 

# set flag
flag=1

# set homeDir to home directory
homeDir=/home 

# loop till flag becomes 1
while [ $flag -eq 1 ] 
do
        # go to previous directory
        cd .. 
        
        # set pwdCommand to present directory
        pwdCommand=`pwd` 
        
        # pint pwd/filename
        echo "$pwdCommand/$fileName" 
        
        # remove the file from present directory
        rm "$pwdCommand/$fileName" 2> /dev/null 
        
        # set flag to 0 if we reach to /home directory
        if [ $pwdCommand = $homeDir ] 
        then 
                flag=0
        
        # end if
        fi
        
# end while
done

输出:

要运行 shell 脚本,请使用

./delFile.sh 

使用以下命令授予 shell 脚本执行权限:

chmod +x delFile.sh

已删除当前工作目录上方的所有 GFGfile.txt 文件