Eliminar todos los archivos que comienzan con un signo de interrogación

23

Tengo una carpeta en la que tengo alrededor de 4k archivos. Algunos de estos archivos comienzan con aa ?o !caracteres. Necesito eliminarlos, pero no puedo encontrar una expresión que lo haga:

rm -f ./?*

solo borra todo. Posiblemente pueda usar grepls y canalizarlo xargsy mover archivos a otra carpeta, pero esperaba que hubiera una manera adecuada de hacerlo. Necesita ayuda tanto en el ?y !archivos.

recluze
fuente

Respuestas:

26

No hay necesidad de nada lujoso. Simplemente escapa del ?para que no se considere parte del globo:

rm -f ./\?*

Esto también funciona para !:

rm -f ./\!*

O de un solo golpe:

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

Actualizar

Acabo de notar que estaba sugiriendo a grepla salida de ls. Quería llamar su atención sobre el hecho de que no debería analizar la salida de ls

Joseph R.
fuente
44
@recluze No es estúpido; está lejos de ser obvio cómo hacerlo si no sabe sobre el escape de comodines.
un CVn
@recluze ¿Todavía te sientes estúpido después de 5 votos en tu pregunta? :) Por cierto, vea la respuesta actualizada.
Joseph R.
Gracias y gracias :) ... Era consciente de los problemas en la salida de ls pero mis archivos tenían un patrón particular con el que podía contar. Sin embargo, es bueno saber :)
recluze
13

En mi caso, los caracteres no eran realmente signos de interrogación, sino caracteres unicode que aparentemente no podían mostrarse en mi consola.

Usar rm -i *funcionó para mí. Si no desea hacer esto, también puede eliminar por inodo, como se describe en http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Para encontrar el inodo, use:

ls -il

Entonces hazlo:

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