2010-04-07 30 views

Respuesta

37

Si son sólo en el directorio actual

find * -type f -print

es eso lo que quieres?

+0

Sabía que se podía hacer con sed, pero esta es una solución mucho mejor. ¡Gracias! – breadjesus

+0

bueno, nunca pensé en eso –

+12

Esto perderá archivos con nombres que comienzan con un punto. – Sean

25

usar sed

find . | sed "s|^\./||" 
+0

Esta es mi solución preferida; es compatible con POSIX (funciona prácticamente en todas partes, incluso en sistemas integrados), es muy corto y es poco probable que genere un comportamiento inesperado. Esta debería ser la respuesta aceptada. –

+5

¿Cómo se combinaría esto con 'find -exec'? – PaulrBear

+0

'encontrar -exec sh -c" echo {} | sed 's |^\ ./ ||' "\;' o 'encontrar -exec sh -c" sed 's |^\ ./ | | ' <<< '{}' "\;' – xenithorb

10

puede ser más corto

find * -type f 
+0

Mejor con '2>/dev/null' para ignorar el error informado cuando el comando se ejecuta en un directorio vacío. – neevek

136

Buscar sólo los archivos regulares bajo el directorio actual, e imprimirlos sin "./" como prefijo:

find -type f -printf '%P\n' 

De hombre encontrar, descripción del formato -printf:

% P Nombre del archivo con el nombre del argumento de línea de comando en el que se encontró eliminado.

+9

+1 Buena solución si su versión de 'find' admite' -printf' (no todas). –

+1

Como dijo Todd, pero más precisamente: no es POSIX 7. –

+6

Compatible o no, es definitivamente más seguro que la respuesta aceptada. –