GNU/Linux >> Tutoriels Linux >  >> Linux

rechercher la commande dans le script bash entraînant l'erreur No such file or directory uniquement pour les répertoires ?

tl;dr - Passe -prune si vous supprimez des répertoires en utilisant find .

Pour toute autre personne qui trébuche sur cette question. Exécution d'un exemple comme celui-ci

find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;

génère une erreur telle que

rm: cannot remove 'non_existent_directory': No such file or directory

Lors de la recherche et de la suppression de répertoires avec find, vous rencontrerez souvent cette erreur car find stocke le répertoire pour traiter les sous-répertoires, puis le supprime avec exec , puis tente de parcourir les sous-répertoires qui n'existent plus.

Vous pouvez soit passer -maxdepth 0 ou -prune pour éviter ce problème. Comme ceci :

find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;

Maintenant, il supprime les répertoires sans aucune erreur. Hourra! :)


Vous n'avez pas besoin d'échapper DOT dans shell glob car ce n'est pas une regex. Alors utilisez .AppleDouble au lieu de \.AppleDouble :

find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;

PS : Je ne vois nulle part $COUNTER étant incrémenté dans votre script.


Linux
  1. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  2. Erreur :xenstore-read :xs_open :aucun fichier ou répertoire de ce type sur DomU [Résolu]

  3. Bash ignorant l'erreur pour une commande particulière

  4. Comment éviter l'erreur No such file or directory pour `make clean` Makefile cible

  5. Erreur avec gradlew :/usr/bin/env :bash :aucun fichier ou répertoire de ce type

Supprimer les fichiers et les répertoires par leurs noms. Aucun fichier ou répertoire de ce nom?

Comment faire fonctionner la commande alias dans un script bash ou un fichier bashrc

Aucune erreur de fichier ou de répertoire de ce type lors de l'exécution d'un binaire

Erreur fatale :cuda.h :aucun fichier ou répertoire de ce type

source conda désactiver :bash :désactiver :aucun fichier ou répertoire de ce type

Pourquoi Bash ne donne-t-il aucun fichier ou répertoire de ce type pour un programme qui se trouve dans mon PATH ?