Supprimer tous les fichiers commençant par un point d'interrogation

23

J'ai un dossier dans lequel j'ai environ 4k fichiers. Certains de ces fichiers commencent par aa ?ou !caractère. Je dois les supprimer mais je ne trouve pas d'expression qui le ferait:

rm -f ./?*

supprime simplement tout. Je peux éventuellement utiliser grepsur ls et le xargsdiriger et déplacer des fichiers vers un autre dossier, mais j'espérais qu'il y avait une bonne façon de le faire. Besoin d'aide sur les fichiers ?et !.

reclasser
la source

Réponses:

26

Pas besoin de trucs de fantaisie. Échappez simplement au ?afin qu'il ne soit pas considéré comme faisant partie du globe:

rm -f ./\?*

Cela fonctionne !aussi:

rm -f ./\!*

Ou d'un seul coup:

rm -f ./{\?,\!}*

Mise à jour

Je viens de remarquer que vous proposiez grepla sortie de ls. Je voulais attirer votre attention sur le fait que vous ne devriez pas analyser la sortie de ls

Joseph R.
la source
4
@recluze Pas stupide; il est loin d'être évident de le faire si vous ne savez pas comment vous échapper.
un CVn le
@recluze Vous vous sentez toujours stupide après 5 votes sur votre question? :) Au fait, voir la réponse mise à jour.
Joseph R.
Merci et merci :) ... J'étais conscient des problèmes de sortie ls mais mes fichiers avaient un modèle particulier sur lequel je pouvais compter. Néanmoins, bon à savoir :)
recluze
13

Dans mon cas, les personnages n'étaient pas vraiment des points d'interrogation, mais des caractères Unicode qui ne pouvaient apparemment pas être affichés dans ma console.

L'utilisation a rm -i *fonctionné pour moi. Si vous ne voulez pas faire cela, vous pouvez également supprimer par inode, comme décrit sur http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Pour trouver l'inode, utilisez:

ls -il

Alors fais:

find . -inum [inode-number] -exec rm -i {} \;
Jonathan
la source