Cómo encontrar más rápido en linux

0

Tengo un directorio con un personaje divertido como ^ M en su espalda. Fueron creados accidentalmente y quiero eliminarlos.

Enumero los directorios por ls -iql y anoté su número de inodo, luego trato de borrarlo buscándolo por número de inodo.

find . -inum 7990028 -exec rmdir -i {} \;

Pero el comando es muy lento. Solo tengo algunos cientos de directorios, pero hay muchos archivos dentro de los directorios. Creo que el comando de búsqueda debe haber estado buscando a través de los archivos.

¿Cómo puedo mejorar esto?

lamwaiman1988
fuente
también el comando no puede eliminar el directorio ....... ¿cómo puedo hacerlo bien?
lamwaiman1988
¿Por qué buscas directorios por inodo?
Ignacio Vazquez-Abrams
Porque no sé cuáles son los personajes graciosos. Es invisible cuando simplemente "ls", y me convierto en "?" cuando "ls -q". Pero no lo es "?".
lamwaiman1988
canalice la salida de ls a través de 'cat -v' o 'cat -A' para que le muestre qué son los 'personajes divertidos'. De su ejemplo, sin embargo, son devoluciones de carro (^ M). Se podrían eliminar todos con 'rm -rf "* {CTRL-V} {CTRL-M}"'. Pero lo ejecuté como 'ls "* {CTRL-V} {CTRL-M}"' primero para comprobar las cosas. '-rf' es MUY poderoso (también conocido como peligroso)
lornix

Respuestas:

1

Los . en el comando significa "buscar desde el directorio actual". Así que para hacerlo rápido, debería estar en el directorio que se encuentra sobre el directorio que desea eliminar. A continuación, también puede limitar la profundidad de búsqueda al directorio actual, y también limitar solo por directorios:

find . -inum 7990028 -type d -maxdepth 1 -exec rmdir -i {} \;
Paul
fuente
aix no tiene la opción maxdepth. Ya estoy en el directorio encima de los directorios. PD. Aix tiene la opción -depth, pero no funciona.
lamwaiman1988
Ah, Aix. Ok bien -type d Hará una gran diferencia.
Paul
Todavía es muy lento.
lamwaiman1988
1

Como sabe que los caracteres problemáticos no son imprimibles, simplemente puede usar

rm -rf *[^[:print:]]*
jankes
fuente
0

Probablemente sea mucho más fácil simplemente eliminar todos los nombres de archivos que contienen ^M en ellos que, bueno ... encontrar.

rm -rf * Ctrl V Ctrl METRO *

Ignacio Vazquez-Abrams
fuente
En realidad no sé cuál es el personaje. Cuando hago "ls -q", tienen "?" en su espalda, y traté de "?" ya.
lamwaiman1988
¿Tu shell tiene auto-completado? ¿Puedes usar la pestaña para completar el nombre del directorio?
Paul
@ gunbuster363: Entonces usa un rango en su lugar. *[ Ctrl-V Ctrl-A Ctrl-V Ctrl-B ... Ctrl-V Ctrl-] ]*
Ignacio Vazquez-Abrams
Recomiendo citar eso, ya que un espacio errante puede arruinar tu día.
lornix