它变为空时删除目录和目录本身的内容

时间:2017-02-05 03:55:15

标签: linux shell

我尝试使用bash脚本编写自己的rm命令,我的新命令叫"删除"接受一个或几个参数(文件和文件夹),它必须像这样:

找到文件时:必须在删除之前检查父级的权限

当它找到一个空目录时,它必须将其删除

和最后一种情况,当它找到一个非空文件夹时,它必须在检查课程权限后删除其所有内容,如果父目录变空,我的命令也必须将其删除

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

这是我的代码

#!/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

1 个答案:

答案 0 :(得分:0)

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

你可以使用这样的发现:

find . -type d -empty