web-dev-qa-db-fra.com

Supprimer le répertoire non git dans git bash, windows

xx@xx-PC ~/xampp/htdocs/sites
$ rmdir /s "yo-2"
rmdir: `/s': No such file or directory
rmdir: `yo-2': Directory not empty

xx@xx-PC ~/xampp/htdocs/sites
$ rmdir "yo-2"
rmdir: `yo-2': Directory not empty

Je n'arrive pas à obtenir que rmdir fonctionne dans git bash. Ce n'est pas dans un repo git et j'ai essayé ce qui précède. Mkdir fonctionne comme prévu, pourquoi ne pas cela?

12
lxm7

rmdir ne fonctionnera pas si le répertoire est vide

Essayer

  rm -rf yo-2

git-bash est un Linux comme Shell

21
Raul Andres

Si vous essayez de supprimer un répertoire entier quel que soit son contenu, vous pouvez utiliser:

rm <dirname> -rf
5
chrcoe

utilisez simplement la commande ci-dessous:

rm -rfv mon répertoire

1
Ben

Un peu tard, mais je pense que cela peut toujours aider quelqu'un qui rencontre des problèmes de performances sur les systèmes Windows. Il est REALLY FAST de supprimer sous Windows à l’aide de git bash en le comparant avec le rm -rf ordinaire. L'astuce consiste à déplacer le fichier/répertoire vers un autre nom aléatoire dans un répertoire temporaire du même lecteur (sous Windows) ou de la même partition (sur les systèmes * nix) et d'appeler la commande rm -rf en mode arrière-plan. Au moins, vous n'avez pas besoin d'attendre une tâche bloquante IO et le système d'exploitation effectuera la suppression dès qu'il sera inactif.

Selon le système que vous utilisez, vous devrez peut-être installer le programme realpath (c'est-à-dire macOS). Une autre alternative consiste à écrire une fonction portable bash comme dans cet article: commande bash/fish pour imprimer le chemin absolu vers un fichier .

fast_rm() {
    path=$(realpath $1) # getting the absolute path
    echo $path
    if [ -e $path ]; then
        export TMPDIR="$(dirname $(mktemp -u))"
        kernel=$(uname | awk '{print tolower($0)}')
        # if windows, make sure to use the same drive
        if [[ "${kernel}" == "mingw"* ]]; then # git bash
            export TMPDIR=$(echo "${path}" | awk '{ print substr($0, 1, 2)"/temp"}')
            if [ ! -e $TMPDIR ]; then mkdir -p $TMPDIR; fi
        fi
        if [ "${kernel}" == "darwin" ]; then MD5=md5; else MD5=md5sum; fi
        rnd=$(echo $RANDOM | $MD5 | awk '{print $0}')
        to_remove="${TMPDIR}/$(basename ${path})-${rnd}"
        mv "${path}" "${to_remove}"
        Nohup rm -rf "${to_remove}" > /dev/null 2>&1 &
    fi
}

# invoking the function
directory_or_file=./vo-2
fast_delete $directory_or_file
0
Wellington Souza

Après avoir essayé quelques autres commandes, cela a fonctionné pour moi:

rm dirname -rf
0
Udit Gupta