2012-01-25 41 views

Trả lời

106

Nếu bạn muốn có một giải pháp có nguồn gốc bash

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

Trên đây sử dụng Parameter Expansion mà có nguồn gốc vỏ và không đòi hỏi một cuộc gọi đến một nhị phân bên ngoài như basename

Tuy nhiên, tôi có thể đề xuất chỉ sử dụng find

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

Tốt câu trả lời. Đối với những người quan tâm đến việc tìm hiểu thêm về việc mở rộng tham số: http://wiki.bash-hackers.org/syntax/pe#substring_removal – DougW

+0

-printf: tên chính hoặc toán tử không xác định – Matthew

32

Chỉ cần sử dụng basename:

echo `basename "$filename"` 

Báo giá là cần thiết trong trường hợp $ filename có chứa e.g. không gian.

+0

Cảm ơn bạn. Đơn giản. – Mechaflash

+2

tốt hơn để sử dụng mở rộng tham số, không yêu cầu phải gọi đến các tệp nhị phân bên ngoài. – SiegeX

+4

Btw, '' không được chấp nhận. Tốt hơn để sử dụng '$()' như Oli đã làm – SiegeX

12

Sử dụng basename:

echo $(basename /foo/bar/stuff) 
Các vấn đề liên quan