aide terminal siouplé

knonball

Membre actif
22 Mars 2005
156
3
78
Bonjour.
Je débute dans terminal il y a plusieurs choses basiques que je comprends pas.
Par exemple, il y a des centaines de dossiers vides dans mon dossier iTunes.
Je demande les informations pour avoir le chemin du dossier, ça me donne : /Users/e/Music/iTunes/iTunes Music

ensuite, je tape dans terminal :

find /Users/e/Music/iTunes/iTunes Music -type d -empty -delete

il me répond No such file or directory

A noter que cette commande fonctionne très bien pour des dossiers situés ailleurs, par exemple :
find /Users/e/Documents -type d -empty
…………………
2ème question :
Quel est la commande terminal pour faire un backup sur disque externe d'un dossier ?

Un très grand merci si quelqu'un peut m'aider, bon aprem....
 
Bonjour

Le problème vient du fait que le caractère « espace » est interprété comme un séparateur.

Lorsque tu tapes
Bloc de code:
[COLOR="DarkRed"]find /Users/e/Music/iTunes/iTunes Music -type d -empty -delete[/COLOR]
le premier paramètre de la commande « find » n'est pas
Bloc de code:
[COLOR="DarkRed"]/Users/e/Music/iTunes/iTunes Music[/COLOR]
mais seulement
Bloc de code:
[COLOR="DarkRed"]/Users/e/Music/iTunes/iTunes[/COLOR]
car le mot « Music » placé après l'espace est interprété comme le second paramètre.

Pour contourner ce problème, tu peux :
- soit faire précéder le caractère « espace » d'un caractère « slashback » (« \ »), qui indique que le caractère ne doit pas être interprété,
- soit encadrer le paramètre entre des doubles-quotes (« " ... " »).

La commande correcte est :
Bloc de code:
[COLOR="DarkRed"]find /Users/e/Music/iTunes/iTunes[B][COLOR="Red"]\[/COLOR][/B] Music -type d -empty -delete[/COLOR]
ou bien :
Bloc de code:
[COLOR="DarkRed"]find [B][COLOR="Red"]"[/COLOR][/B]/Users/e/Music/iTunes/iTunes Music[B][COLOR="Red"]"[/COLOR][/B] -type d -empty -delete[/COLOR]
 
Dernière édition:
Génial, ça marche, grand merci !! :) :)

---------- Nouveau message ajouté à 15h47 ---------- Le message précédent a été envoyé à 15h36 ----------

Désolé, c'est de nouveau moi...

J'ai vu qu'en glissant un dossier sur terminal, il affiche le chemin...très pratique.

En fait cette commande n'efface pas tout les dossiers vides malheureusement.
Par exemple, ce dossier est vide :

/Users/e/Music/iTunes/iTunes\ Music/Music/Goran\ Bregovic/Tales\ \&\ Songs\ From\ Weddings\ \&\ Funerals

mais la commande :

find /Users/e/Music/iTunes/iTunes\ Music/Music -type d -empty -delete

ne l'efface pas. Pourquoi ??
 
... Il est à noter que l'emploi des doubles-quotes ne règle pas totalement le problème, puisque le paramètre peut également contenir ce caractère, lequel fermerait alors prématurément l'encadrement réalisé :
Bloc de code:
[COLOR="Sienna"]cat "Desktop/CDG - [B]"[/B]Je vous ai compris !""[/COLOR]
                   ↑
                 oups !
On peut alors employer de simples cotes (« ' ... ' ») pour encadrer le paramètre, ce qui réglerait cette situation :
Bloc de code:
[COLOR="DarkRed"]cat [B][COLOR="Red"]'[/COLOR][/B]Desktop/CDG - "Je vous ai compris !"[B][COLOR="Red"]'[/COLOR][/B][/COLOR]
... mais poserait problème dans les cas où la simple quote ferait partie du paramètre :
Bloc de code:
[COLOR="Sienna"]cat 'Desktop/DD - "Je n[B]'[/B]ai rien compris"'[/COLOR]
                       ↑
                     oups !

La meilleure méthode reste encore d'utiliser le « slashback », comme le fait d'ailleurs le système quand on glisse et qu'on lâche un fichier ou un dossier dans la fenêtre de Terminal avec la souris:
Bloc de code:
[COLOR="DarkRed"]cat Desktop/\"Il\ m\'a\ écrit\".txt[/COLOR]
 
Ok c'est très clair...

Mais est ce que pour ça tu aurais une solution ? :

En fait cette commande n'efface pas tout les dossiers vides malheureusement.
Par exemple, ce dossier est vide :

/Users/e/Music/iTunes/iTunes\ Music/Music/Goran\ Bregovic/Tales\ \&\ Songs\ From\ Weddings\ \&\ Funerals

mais la commande :

find /Users/e/Music/iTunes/iTunes\ Music/Music -type d -empty -delete

ne l'efface pas. Pourquoi ??
 
Désolé, c'est de nouveau moi...

J'ai vu qu'en glissant un dossier sur terminal, il affiche le chemin...très pratique.

En fait cette commande n'efface pas tout les dossiers vides malheureusement.
Par exemple, ce dossier est vide :

/Users/e/Music/iTunes/iTunes\ Music/Music/Goran\ Bregovic/Tales\ \&\ Songs\ From\ Weddings\ \&\ Funerals

mais la commande :

find /Users/e/Music/iTunes/iTunes\ Music/Music -type d -empty -delete

ne l'efface pas. Pourquoi ??
Il est possible que le dossier paraisse vide, mais qu'il ne l'est pas réellement. Il peut contenir des fichiers cachés. Il peut également y avoir un problème de droit d'accès.
 
Dernière édition:
En affichant les fichiers invisibles il y a qu'un .DS_Store dans le dossier. Est-ce que c'est ça qui empêche le terminal de considérer le dossier comme vide ? bizarre ?
et dans le 2ème cas comment résoudre "un problème de droit d'accès" ?
 
Il faut regarder les autorisations données aux fichiers et dossiers qui les contiennent, à partir de la fenêtre « Information » du Finder (raccourci ⌘I) et/ou à l'aide de la commande « ls -al ... ». Si des attributs spéciaux ont été fixés, il faut avoir recours à la commande /usr/bin/GetFileInfo (installée avec XCode) pour le vérifier.