[Shell] 文件名截取的問題:bash .vs. csh


參考: http://bbs.chinaunix.net/thread-1825455-1-1.html

但是, 經常處理更復雜的文件名, 這里給出一個加長版的例子, 換湯不換葯.

查詢當前shell正在使用的是哪個shell, 可以用命令:

$ echo $0
/bin/csh

 

在csh中, 文件名截取有以下幾種方式, 按最后一次 '/' 和 '.' 號出現的位置對包括完整路徑的文件名進行分割。

$ echo $0
/bin/csh
$ set pfName=/media/Test/MyFile.tar.gz
$ echo ${pfName:r}
/media/Test/MyFile.tar
$ echo ${pfName:e}
gz
$ echo ${pfName:t}
MyFile.tar.gz
$ echo ${pfName:h}
/media/Test
$ echo ${pfName:r:t}
MyFile.tar

 

在bash中,對包含完整路徑的文件名截取的方式如下:

$ /bin/bash
$ echo $0 
/bin/bash
$ pfName
='/media/Test/MyFile.tar.gz' # 獲取全路徑文件名 $ echo ${pfname} /media/Test/MyFile.tar.gz
# 獲取后綴以外的完整文件名 $
echo ${pfName%.*} /media/Test/MyFile.tar # 獲取文件的后綴名 $ echo ${pfName##*.} gz # 獲取文件名 $ echo ${pfName##*/} MyFile.tar.gz $ # 僅僅獲取文件的前綴 $ echo ${pfName##*/} | sed -r 's/^(.*)\..*$/\1/g' MyFile.tar # 獲取該文件的位置 $ echo ${pfName%/*} # comment here only */ /media/Test

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM