2012-01-25 12 views

risposta

106

Se si desidera un nativo bash soluzione

for file in /home/user/*; do 
    echo ${file##*/} 
done 

Il utilizza sopra Parametro di espansione che è nativo per il guscio e non richiede una chiamata a un binario esterno come basename

Tuttavia, potrei suggerire semplicemente di usare find

find /home/user -type f -printf "%f\n" 
+7

Buona risposta. Per chi è interessato a saperne di più sull'ampliamento dei parametri: http://wiki.bash-hackers.org/syntax/pe#substring_removal – DougW

+0

-printf: primario sconosciuto o operatore – Matthew

32

Basta usare basename:

echo `basename "$filename"` 

Le virgolette sono necessarie nel caso in cui $ nomefile contiene per esempio spazi.

+0

Grazie. Semplice. – Mechaflash

+2

meglio usare l'espansione dei parametri, non richiede chiamate ai binari esterni. – SiegeX

+4

Btw, '' è obsoleto. Meglio usare '$()' come Oli ha fatto – SiegeX

12

Uso basename:

echo $(basename /foo/bar/stuff) 
Problemi correlati