2011-02-01 16 views
11

Estoy haciendo un find $ PWD -name 'filename' | vim -redireccionando la salida del comando 'buscar' a 'vim'

esperando que se abra el nombre del archivo en el editor vim. Pero no está funcionando. En este caso, estoy seguro de que existe un solo archivo con el nombre 'nombre de archivo'.

También el resultado de find proporciona la ruta completa en stdout.

+0

usando 'comando | vim -' le dice a vim que lea el resultado de 'command' y lo ponga en un buffer. (A diferencia de abrir esos archivos.) – idbrii

+0

@pydave Me perdí el '-' en tu comentario. ¡Importante! –

+1

@pydave Incidentalmente, 'vim <(comando)' hace lo mismo, usando la sustitución del proceso Bash, y esto funciona con algo más que vim. p.ej. para ver las diferencias entre dos directorios, use 'diff <(ls -l dir1) <(ls -l dir2)' –

Respuesta

20
vim "$(find "$PWD" -name 'filename')" 

o

find "$PWD" -name 'filename' -exec vim {} \; 

(Usted puede dejar "$PWD", por cierto. find comienza la búsqueda del directorio actual por defecto.)

+0

Gracias Romano ... eso ayudó .. –

+1

Esto no funciona para mí. 'vim" $ (find "$ PWD" -name 'filename') "' abre un nuevo archivo cuyo nombre es una concatenación de todos los nombres de archivo que se obtienen de find. Esto está en OSX. –

+0

Ah. El OP especifica que solo hay un archivo coincidente. Mi objeción es por lo tanto disminuida. –

7

find . -name 'filename' -print0 | xargs -0 vim

también debería funcionar. Es posible que desee leer sobre xargs, que es algo útil que debe saber.

+1

Esto no funciona para mí. 'encontrar. -name 'utilidad' -print0 | xargs -0 vim' en su lugar abre un único archivo nuevo, cuyo nombre es una concatenación de la salida de find. Esto está en OSX. –

+0

Ah. El OP especifica que solo hay un archivo coincidente.Mi objeción es por lo tanto disminuida –

0

mencionados en comentario de @ idbrii, pero mi favorita es:

find . -name 'filename' -type f -exec vim {} \+ 

Esto abre cada archivo encontrado en su propio buffer listo para ser navegado con :next y :prev. Probado en OSX, pero estoy bastante seguro de que también funcionará en Linux.

Cuestiones relacionadas