2010-01-06 17 views
3

Comment supprimer tous les fichiers d'un dossier comportant une apostrophe?Depuis Shell: Supprimer tous les fichiers avec des apostrophes

par exemple:

Baird/'s Tunnel.jpg

Bach /' s Birds.jpg

Ce ISN // 't good.png

Je voudrais tous ces fichiers supprimés, mais tout ce qui n'a pas une apostrophe à rester intacte, comme:

cela est good.jpg donotdelete.png

+1

Quel OS et shell? –

+0

bash de préférence ou sh est bon – kylex

Répondre

3

En sh, vous pouvez faire

rm *\'* 
+0

Cela ne fonctionnera pas pour les exemples donnés, car ils ont des espaces. Mieux: pour fn dans * \ '*; fais rm "$ fn"; fait –

1

Vous pouvez utiliser la commande find:

find . -name "*'*" -delete

Comme @ Bryan a souligné dans son commentaire, cela va supprimer tous les fichiers dans le répertoire en cours et tous les sous-répertoires. Si vous ne voulez pas descendre les répertoires utilisent:

find . -name "*'*" -maxdepth 1 -delete

qui fait find séjour dans le répertoire courant.

+2

bien sûr, sans aucun autre argument cela supprimera tous les fichiers dans le répertoire courant * et * tous les sous-répertoires. –

+0

Cela devrait être '-maxdepth 1' (' -depth' est pour le traitement en profondeur et ne prend pas d'argument) –

+0

@Dennis pour une raison quelconque, sur mon mac '-depth 1' se comporte comme' -maxdepth 1' –

0

trouver GNU

find /path/ -type f -name "*[']*" -exec rm {} +;