Supprimer tous les fichiers d'un dossier sans supprimer de répertoires? (OS X)

2

Existe-t-il une simple commande de terminal permettant de supprimer toutes les données réelles, tous les fichiers mais laissant tous les répertoires? Y compris les paquets (.app) comme répertoires?

- Vous n'avez pas besoin de lire ceci: la raison en est sur mon iPod Touch, chaque fois que je ssh sur / private / var / mobile / Applications pour obtenir une icône ou quelque chose à changer pour un thème, je dois parcourir chaque dossier pour trouver l'application, car ils se trouvent tous dans leurs dossiers d'identifiant unique (par exemple, 2C053638-26FE-42DD-A235-30FCBA59E623), il est impossible de le trouver. J'ai donc copié le dossier Applications sur mon bureau afin de pouvoir sélectionner le nom de l'application qu'il contient, puis le dossier dans lequel il se trouve serait l'unique dossier d'identification de l'iPod.

mk12
la source

Réponses:

9

Voulez-vous supprimer uniquement les fichiers du répertoire actuel ou les fichiers des sous-répertoires? Pour ce dernier, cela fonctionnerait dans la plupart des environnements de type Unix.

find . -type f -print0 | xargs -0 rm -f

ou si vous savez qu'il n'y a pas de fichiers ou de répertoires avec des espaces dans leurs noms, vous pouvez simplifier un peu avec

find . -type f | xargs rm -f

Je ne suis pas un utilisateur Apple, donc je connais peu les répertoires .app dont vous parlez, mais vous devriez pouvoir éviter de les toucher en ajoutant grep entre find et xargs, comme

find . -type f | grep -v \.app | xargs rm -f

Remplacez rm -fpar lsou ls -ldans tout ce qui précède pour obtenir une liste de ce qui serait supprimé au lieu d'effectuer la suppression.

David Spillett
la source
mmm bon vieux trouver | xargs
Roy Rico
2
OS X possède une version assez moderne de find pour prendre en charge "find. -Type f -exec rm -rf {} +" - notez le "+" au lieu de "\;" après le -exec. Cela imite la partie xargs dans l'exécutif de find
Doug Harris Le
pas besoin de xargs ou -exec du tout, il suffit d'utiliser "find. -type f -delete"
akira
J'ai tendance à m'en tenir à la trinité de find + grep + xargs, principalement par habitude. Il y a bien longtemps, lorsque vous rencontriez des versions de find qui ne prenaient pas en charge les options les plus "avancées" ou ne les implémentaient pas de la même manière, bien que ces jours findsoient presque toujours des GNU find(ou quelque chose qui imite) exactement) mais les vieilles habitudes ont la vie dure.
David Spillett
J'ai utilisé un find . -type f -deleteexcellent travail, maintenant, dans get info, le dossier principal prend zéro kb, et les kits d'applications sont toujours là. Merci!
mk12
1

Find peut également supprimer:

$ find . -type f -exec rm {} \;

ATTENTION: cette commande signifie business - elle supprime tous les fichiers à partir du répertoire actuel sans rien demander.

Hai Vu
la source
1
"find. -type f -delete" serait LA commande de suppression de find.
Akira
J'apprends quelque chose de nouveau tous les jours. Merci Akira.
Hai Vu
0

ouvrez votre application de terminal

(1) cd {chemin du contenu iTouch}

  for example:  cd /Users/Mike/Desktop/myTouch

(2) puis récidivez à travers les répertoires et supprimez le contenu.

  find {directory} -type f | tee output

  for i in `grep -v .app output`
  do
   echo ${i}; rm ${i}
  done

par exemple,

find /Users/Mike/Documents/myTouch/ -type f | tee output

for file in `grep -v .app output`
do
 echo ${file}
 rm ${file}
done
coquillages
la source