find . -type f -print
stampa
./file1
./file2
./file3
Qualsiasi modo per farlo stampare
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
find . -type f -print
stampa
./file1
./file2
./file3
Qualsiasi modo per farlo stampare
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
Risposte:
Se sono solo nella directory corrente
find * -type f -print
È questo che vuoi?
-printrichiesto? Ha dato lo stesso risultato senza quella bandiera.
Trova solo i file regolari nella directory corrente e stampali senza il ./prefisso " ":
find -type f -printf '%P\n'
Da man find, descrizione del -printfformato:
% P Nome del file con il nome dell'argomento della riga di comando in base al quale è stato trovato rimosso.
findsupporti -printf(non tutti lo fanno).
\0invece \nse vuoi reindirizzarlo xargs -0(ad es. Nel caso in cui i nomi dei file contengano spazi bianchi), ad es.find -type f -printf '%P\0' | xargs -0 head
brew install findutils;)
Usa sed
find . | sed "s|^\./||"
find -exec?
find -exec sh -c "echo {} | sed 's|^\./||'" \; oppure find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
può essere più breve
find * -type f
2> /dev/nullignorare l'errore segnalato quando il comando viene eseguito in una directory vuota.
Un altro modo di mettere a nudo il ./
find * -type d -maxdepth 0
Poiché l' -printfopzione non è disponibile su OSX, findecco un comando che funziona su OSX find, nel caso in cui qualcuno non volesse installare gnu findusando brewetc:
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
-exec /path/to/myscript.sh {}nel tuofind, il-printf '%P\n'non funziona. Invece, devo fare il./prefisso chomping all'interno della sceneggiatura da:p=${1#"./"}