2012-01-25 3 views

답변

106

네이티브 bash 솔루션

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

을 원하는 경우 위의 사용 쉘이 원산지이며 그러나 이러한 basename

와 같은 외부 바이너리에 전화를 필요로하지 않습니다 매개 변수 확장, 그냥 사용하는 것이 좋습니다. find

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

좋은 대답. 매개 변수 확장에 대한 자세한 내용을 보려면 http://wiki.bash-hackers.org/syntax/pe#substring_removal – DougW

+0

-printf : 알 수없는 기본 연산자 또는 연산자 – Matthew

32

그냥 basename를 사용

echo `basename "$filename"` 

를 따옴표는 $ 파일 이름은 예를 들어, 포함하는 경우에 필요하다 공백

+0

감사합니다. 똑바로. – Mechaflash

+2

매개 변수 확장을 사용하는 것이 더 좋으며 외부 바이너리를 호출 할 필요가 없습니다. – SiegeX

+4

Btw,''은 (는) 사용되지 않습니다. Oli처럼'$()'을 사용하는 것이 더 낫다 – SiegeX

12

사용 basename :

echo $(basename /foo/bar/stuff) 
관련 문제