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?


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 {} \;

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:]]*

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 *


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.