2010-04-07 13 views

risposta

37

Se sono solo nella directory corrente

find * -type f -print

E 'questo che vuoi?

+0

Sapevo che si poteva fare con sed, ma questa è una soluzione molto migliore. Grazie! – breadjesus

+0

nice, mai pensato a quello –

+12

Mancheranno file con nomi che iniziano con un punto. – Sean

25

Usa sed

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

Questa è la mia soluzione preferita; è compatibile con POSIX (funziona praticamente ovunque, anche con sistemi embedded), molto breve, e difficilmente porta a comportamenti imprevisti. Questa dovrebbe essere la risposta accettata. –

+5

Come sarebbe combinato con 'find -exec'? – PaulrBear

+0

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

10

può essere più breve

find * -type f 
+0

Meglio con '2>/dev/null' per ignorare l'errore segnalato quando il comando viene eseguito in una directory vuota. – neevek

136

Trova solo i file regolari nella directory corrente, e stamparle senza "./" prefisso:

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

Da man find, descrizione del formato -printf:

% P Nome file con il nome dell'argomento della riga di comando in base al quale è stato rimosso.

+9

+1 Buona soluzione se la tua versione di 'find' supporta' -printf' (non tutti lo fanno). –

+1

Come ha detto Todd, ma più precisamente: non è POSIX 7. –

+6

Supportato o meno, è sicuramente più sicuro della risposta accettata. –

Problemi correlati