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 !.

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


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 {} \;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.