Supprimer récursivement des fichiers

Est-ce que quelqu’un a une solution pour supprimer ces fichiers embarqués ._ et .DS_Store que l’on obtient après avoir déplacé des fichiers d’un Mac vers un serveur Linux?

spécifier un répertoire de démarrage et le laisser aller? comme / var / www / html / down …

changez de répertoire et utilisez:

find . -name ".DS_Store" -print0 | xargs -0 rm -rf find . -name "._*" -print0 | xargs -0 rm -rf 

Non testé, essayez-les sans les xargs en premier!

Vous pouvez remplacer la période après find par le répertoire au lieu de passer au répertoire en premier.

 find /dir/here ... 
 find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete 

Les nouveaux findutils supportent -delete, donc:

 find . -name ".DS_Store" -delete 

Je pense que cela fonctionnera pour vous si vous avez un système POSIX à jour. Au moins, cela fonctionne pour moi sur OS X 10.8,

Nous remercions @ephemient dans un commentaire sur le post de @ X-Istence (pensant que c’était assez utile pour justifier sa propre réponse).

Commande simple:

 rm `find ./ -name '.DS_Store'` -rf rm `find ./ -name '._'` -rf 

Bonne chance!

 cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm 

Vous pouvez passer à zsh au lieu de bash. Cela vous permet d’utiliser ** pour faire correspondre des fichiers n’importe où dans une arborescence de répertoires:

 $ rm /var/www/html/**/_* /var/www/html/**/.DS_Store 

Vous pouvez également les combiner comme ceci:

 $ rm /var/www/html/**/(_*|.DS_Store) 

Zsh a beaucoup d’autres fonctionnalités qui manquent à bash, mais celle-là vaut la peine d’être modifiée. Il est disponible dans la plupart des dissortingbutions Linux (probablement toutes), ainsi que dans cygwin et OS X.

Vous pouvez trouver plus d’informations sur le site zsh .

 find . -name "FILE-TO-FIND"-exec rm -rf {} \; 

Exemple pour supprimer “Thumbs.db” de manière récursive;

 find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf 

Valider par:

 find . -iname "Thumbs.db" 

Cela devrait maintenant ne pas afficher les entrées avec “Thumbs.db”, dans le chemin actuel.

Il est préférable de voir ce qui est enlevé en ajoutant -print à cette réponse.

 find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete -print 

si vous avez Bash 4.0 ++

 #!/bin/bash shopt -s globstar for file in /var/www/html/**/.DS_Store /var/www/html/**/._ do echo rm "$file" done 

Quelques points à noter:

‘-delete’ n’est pas récursif. Donc, si .TemporaryItems (folder) contient des fichiers, la commande échoue.

Il y a beaucoup de ces fichiers embêtants créés par macs: .DS_Store ._. DS_Store .TemporaryItems .apdisk

Cette commande unique les adresse à tous. Enregistre en cours d’exécution pour retrouver plusieurs fois.

 find /home/foo \( -name '.DS_Store' -or -name '._.DS_Store' -or -name '._*' -or -name '.TemporaryItems' -or -name '.apdisk' \) -exec rm -rf {} \; 

Cela fonctionne aussi:

sudo rm -rf 2018-03-*

ici vos fichiers de suppression avec des noms du format 2018-03- (autre chose)

restr simple