我想刪除字符串的第一部分,這裏是代碼,替換最後部分的作品,但不是第一部分,任何幫助?謝謝。如何刪除B中字符串的第一部分
dir="/info/"
file_name="/info/test.db"
no_ext=${file_name%.db}
no_path=${no_ext%${dir}}
echo $file_name
echo $no_ext
echo $no_path
我想刪除字符串的第一部分,這裏是代碼,替換最後部分的作品,但不是第一部分,任何幫助?謝謝。如何刪除B中字符串的第一部分
dir="/info/"
file_name="/info/test.db"
no_ext=${file_name%.db}
no_path=${no_ext%${dir}}
echo $file_name
echo $no_ext
echo $no_path
同與%
(刪除後綴),您可以使用#
從而消除前綴:
no_path="${file_name#${dir}}"
可以說,你可以在這裏使用一個模式,因爲在我看來,就像你剝離了一個文件名的路徑:
no_path="${file_name##*/}"
雙#
使得比賽貪婪,所以它消除一切到最後的斜線。這是我一直在我的bash腳本中使用的東西'Usage
函數:echo "${o##*/} [-h] does something
我想,你正試圖得到文件名,文件名沒有擴展名和擴展名。
更好的用戶basename命令來做到這一點。
$ basename /Users/text/help1.txt
help1.txt
$ basename help1.txt| cut -d'.' -f2
txt
$ basename help1.txt | cut -d'.' -f1
help1
此外,如果你想獲得目錄名不帶文件 使用目錄名
$ dirname /Users/text/help1.txt
/Users/text
嘗試'no_path = $ {no_ext#$ {dir}}' – ymonad