从当前工作目录上方的每个目录中删除文件的 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
- 将 homeDir 初始化为“/home”目录
- 循环直到标志变为 0,否则转到步骤 13。
- 使用“cd ..”命令转到上一个目录。
- 设置 pwd 命令以显示工作目录
- 使用 rm命令删除文件
- 如果当前工作目录等于主目录,则将标志设置为 0
- 转到第 7 步
- 停止
下面是实现。
# 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 文件