gpt4 book ai didi

linux - 当目录变空时删除目录内容和目录本身

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:56 26 4
gpt4 key购买 nike

我正在尝试使用 bash 脚本编写自己的 rm 命令,我的新命令“remove”接受一个或多个参数(文件和文件夹),并且它的行为必须如下所示:

当它找到一个文件时:它必须在删除它之前检查父文件的权限

当它发现一个空目录时,它必须删除它

最后一种情况,当它发现一个非空文件夹时,它必须在检查类(class)权限后删除其所有内容,如果父目录变空,我的命令也必须将其删除

我的问题是第三种情况对我不起作用

这是我的代码

#!/bin/bash

if [ $# -lt 1 ]
then
echo "Executer la commande avec au moins un paramètre"
else
for i in $*
do
filename=`basename $i`
#echo "nom fichier : $filename"
path=`dirname $i`
#echo "chemin du fichier : $path"
#Vérification de l'existence du fichier/rep
if [ -e $path/$filename ]
then
# Si fichier
if [ -f $path/$filename ]
then
echo "fichier"
$HOME/droit_parent $path
valretourne=$?
if [ $valretourne -eq 20 ]
then
echo "Erreur : `dirname $path` n\'a pas le droitW"
else if [ $valretourne -eq 10 ]
then
rm -f $path/$filename
echo "$path/$filename a été bien supprimé"
fi
fi
fi
#Si rep
if [ -d $path/$filename ]
then
echo "repertoire"
if [ "$(ls -A $path/$filename)" ]
then
echo "non empty directory"
$HOME/remove $path/$filename/*
if [ ! "$(ls -A $path/$filename)" ]
then
rmdir $path/$filename
fi
else
echo "empty directory"
rmdir $path/$filename
fi
fi
else echo "ERREUR : $path/$filename n\'existe pas !"
fi
done
fi

最佳答案

为了找到一个空目录,我认为如果您使用find而不是列出该目录中的文件/文件夹并根据该目录决定该目录是否为空,会容易得多。

您可以像这样使用查找:

find . -type d -empty

关于linux - 当目录变空时删除目录内容和目录本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42048373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com