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?
-print
richiesto? 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 -printf
formato:
% P Nome del file con il nome dell'argomento della riga di comando in base al quale è stato trovato rimosso.
find
supporti -printf
(non tutti lo fanno).
\0
invece \n
se 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/null
ignorare 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' -printf
opzione non è disponibile su OSX, find
ecco un comando che funziona su OSX find, nel caso in cui qualcuno non volesse installare gnu find
usando brew
etc:
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#"./"}