Aller au contenu

Supprimer Les Fichier @eadir


schwuler

Messages recommandés

Bonjour,

Préambule (peut etre sauter, mais je le laisse, car cela pourra servir a quelqu'un d'autre)

Depuis mon PC, je ne peux pas supprimer un repertoire qui se trouve sur mon nas (via partage samba), il me dit qu'un fichier est ouvert par un autre utilisateur.

Apres une rapide recherche, j'ai trouvé que le probleme venait d'un repertoire caché nommé @eaDir. En supprimant depuis le NAS ce repertoire, je résoud mon probleme de suppression de repertoire depuis Windows. Cool, sauf qu'il y a un @ eaDir dans chaque repertoire de mon NAS... :angry:

Problématique :

Je cherche donc a supprimer tous @eaDir qui ne sont pas en rapport avec le serveur multimedia. Voici une commande trouvée sur le net :

dans un premier temps on affiche :

find . -name @eaDir -type d -print |while read FILENAME; do echo « ${FILENAME} »; done

./Documents/conf netgear/@eaDir
./Interventions/Blancco 2010/blancco client 1/@eaDir
./Interventions/Blancco 2010/@eaDir
./Interventions/584103 X3650 RAID 5 corrompu/@eaDir

l'affichage fonctionne bien ! je remplace le echo par un rm -rf pour supprimer les @eaDir...

La commande rends la main, mais n'a rien supprimé...

Apres plusieurs test je me rends compte que le problème vient des espace dans mes nom de repertoires.

meme en tapant directement un rm -rf "./Documents/conf netgear/@eaDir", cela ne fonctionne pas.

j'ai essayé, " ' et ` mais meme probleme.

Questions :

Comment supprimer un repertoire avec des espaces sous linux ?

En sachant que je ne souhaite pas les renommer.

D'avance merci

Seb

Modifié par schwuler
Lien vers le commentaire
Partager sur d’autres sites

un devant les espace resoud le problème

Mais ça ne marchera pas pour le find car les espaces sont dans les chemins de fichiers trouvés par le find lui même.

Dans ce cas, la bonne approche est:

find . -name @eaDir -type d -print0 | xargs -0 rm -rf 

(les "0" sont des zeros, pas la lettre "O")

A tester une fois "a blanc" (avec un "rm" on ne sait jamais) avec un echo:

find . -name @eaDir -type d -print0 | xargs -0 echo rm -rf
Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos retour,

J'avais aussi trouvé cette ligne de commande en cherchant sur google. C'est le meme problème.

le echo m'affiche tout, mais le rm ne fait rien.Seul le @eaDir du repertoire en cours ou des sous repertoire ne comportant pas d'espace sont supprimés (comme pour ma premiere commande).

Si tu as une autre idée ? :D

++

seb

Lien vers le commentaire
Partager sur d’autres sites

j'ia simplifié mon problème a l'extreme, je viens de créer un repertoire nommé test<espace>repertoire (on remarquera qu'il n'y a pas de soucis pour le créer) :

DS213> mkdir "test repertoire"
DS213> ls -al
drwxr-xr-x    2 root     root          4096 Apr 12 22:00 test repertoire

Ensuite je tente de le supprimer, mais impossible, meme avec le "" (j'ai mis l'option -i a la place du -f, pour avoir l'erreur d'execution) :

DS213> rm -ri "test repertoire"
rm: can't remove 'test': No such file or directory
rm: can't remove 'repertoire': No such file or directory


DS213> rm -ri "test repertoire"
rm: can't remove 'test': No such file or directory
rm: can't remove 'repertoire': No such file or directory

Si quelqu'un a deja rencontré ce problème..

++

seb

Modifié par schwuler
Lien vers le commentaire
Partager sur d’autres sites

Etant donné que le CD fonctionne avec les espaces.

pour palier le problème, il faudrait passer par un script, dans le style

#!/bin/bash

déclaration d'un variable contenant le repertoire courant ( $rep_courant )

find . -name @eaDir -type d -print --> on envoie le résultat dans un fichier

tant qu'il y a une ligne a traité :

{

variable = resultat de la premiere ligne
variable = variable - les 6 derniers caractères (on enleve @eaDir)

cd variable

rm -rf @eaDir

cd $rep_courant

}

Est ce que le fait de se déplacer est faisable dans un script ?

Lien vers le commentaire
Partager sur d’autres sites

DS213> rm -ri "test repertoire"
rm: can't remove 'test': No such file or directory
rm: can't remove 'repertoire': No such file or directory


DS213> rm -ri "test repertoire"
rm: can't remove 'test': No such file or directory
rm: can't remove 'repertoire': No such file or directory
Si quelqu'un a deja rencontré ce problème..

Ca défie toute logique! Je n'ai *jamais* rencontré un tel comportement en shell (et je suppose que tu utilise bien le shell standard, "/bin/ash" je suppose ?)

Lien vers le commentaire
Partager sur d’autres sites

re,

oui j'utilise le shell par défaut, /bin/ash.

les commandes CD MKDIR RMDIR fonctionnent bien avec les espace, sous reserve de mettre des double cote.

le LS et le RM, impossible de faire fonctionner.

entre temps, je viens de me rappeler que j'ai deja rencontré un pb similaire sous AIX 6.1 en ksh... je n'avais cependant pas le temps de "reflechir", j'avais contourné le probleme en renommant le reperoire via Filezilla... ici je ne peux pas, il y'en a beaucoup trop.

Sur ton nas cela fonctionne t il ?

merci !

seb

PS : je suis en DSM 4.2 3216

Modifié par schwuler
Lien vers le commentaire
Partager sur d’autres sites

oui j'utilise le shell par défaut, /bin/ash.

les commandes CD MKDIR RMDIR fonctionnent bien avec les espace, sous reserve de mettre des double cote.

le LS et le RM, impossible de faire fonctionner.

Pas facile de comprendre ce qui se passe: le shell effectue le parsing des arguments indépendamment de la commande.

A tout hasard, vérifie ce que donnent chez toi les commandes

type ls

et

type rm

entre temps, je viens de me rappeler que j'ai deja rencontré un pb similaire sous AIX 6.1 en ksh...

Ben moi, je pratique cet environnement (AIX et ksh) tout les jours depuis des années et je n'ai jamais rencontré cette anomalie.

je n'avais cependant pas le temps de "reflechir", j'avais contourné le probleme en renommant le reperoire via Filezilla... ici je ne peux pas, il y'en a beaucoup trop.

Sur ton nas cela fonctionne t il ?

Bien entendu (tu penses que j'ai vérifié avant de répondre), comme sur tous les autres shells unix que je pratique d'ailleurs.

Lien vers le commentaire
Partager sur d’autres sites

re,

DS213> type ls
ls is a tracked alias for /bin/ls
DS213> type rm
rm is a tracked alias for /bin/rm
DS213> type mkdir
mkdir is a tracked alias for /bin/mkdir
DS213>

et merci pour tes tests ;)

Tout est normal et j'en perd mon latin (j'ai pourtant un peu de bouteille dans le domaine)

Ah moins que l'explication soit si grosse et devant mes yeux que je ne la voir même pas.

Lien vers le commentaire
Partager sur d’autres sites

Chez moi, en DSM 4.2, j'ai pas ces problèmes :

bud-server> ls -ltr
bud-server> mkdir "test syno"
bud-server> ls -ltr
drwxr-xr-x    2 root     root          4096 Apr 13 11:57 test syno
bud-server> rm -rf "test syno"
bud-server> ls -ltr
bud-server> mkdir "test syno"
bud-server> rm -ri "test syno"
bud-server> ls -ltr
bud-server> mkdir "test syno"
bud-server> rm -ri test syno/
bud-server> ls -ltr
bud-server>

Modifié par bud77
Lien vers le commentaire
Partager sur d’autres sites

Vérifier votre version de busybox (sur lequel les commandes pointent)

Chez moi :

bud-server> busybox

BusyBox v1.16.1 (2013-04-16 20:14:37 CST) multi-call binary.

Sympa le nom. :P

Pour un euro (en bitcoins via le port USB) il éjecte une mousse bien fraîche je suppose?

Le jour où ils inventent la machine à pression "connectée" je fonce !!!!

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.