亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Bash中提取文件名和擴展名

在Bash中提取文件名和擴展名

qq_笑_17 2019-06-03 10:22:13
在Bash中提取文件名和擴展名我想分別獲得文件名(沒有擴展名)和擴展名。到目前為止,我找到的最好的解決辦法是:NAME=`echo "$FILE" | cut -d'.' -f1`EXTENSION=`echo "$FILE" | cut -d'.' -f2`這是錯誤的,因為如果文件名包含多個.人物。如果,比方說,我有a.b.js,它會考慮a和b.js,而不是a.b和js.它可以很容易地用Python實現file, ext = os.path.splitext(path)但是,如果可能的話,我不希望只為此啟動Python解釋器。有更好的主意嗎?
查看完整描述

4 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

首先,獲取沒有路徑的文件名:

filename=$(basename?--?"$fullfile")extension="${filename##*.}"filename="${filename%.*}"

或者,您可以將注意力集中在路徑的最后一個“/”上,而不是“?!奔词鼓胁豢深A測的文件擴展名,它也可以工作:

filename="${fullfile##*/}"

您可能需要查看文檔:

  • 在網頁上“

    3.5.3殼體參數擴展"

  • 在bash手冊中稱為“參數展開”的部分。


查看完整回答
反對 回復 2019-06-03
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

~% FILE="example.tar.gz"

~% echo "${FILE%%.*}"

example

~% echo "${FILE%.*}"

example.tar

~% echo "${FILE#*.}"

tar.gz

~% echo "${FILE##*.}"

gz


查看完整回答
反對 回復 2019-06-03
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

通常您已經知道擴展,所以您可能希望使用:

basename filename .extension

例如:

basename /path/to/dir/filename.txt .txt

我們得到

filename


查看完整回答
反對 回復 2019-06-03
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您可以使用POSIX變量的魔力:

bash-3.2$ FILENAME=somefile.tar.gz
bash-3.2$ echo ${FILENAME%%.*}somefile
bash-3.2$ echo ${FILENAME%.*}somefile.tar

如果你的文件名是./somefile.tar.gz然后echo ${FILENAME%%.*}將貪婪地刪除與.你就會有一根空的繩子。

(您可以使用一個臨時變量來解決這個問題:

FULL_FILENAME=$FILENAME
FILENAME=${FULL_FILENAME##*/}echo ${FILENAME%%.*}

)


這,這個立地解釋更多。

${variable%pattern}
  Trim the shortest match from the end
${variable##pattern}
  Trim the longest match from the beginning
${variable%%pattern}
  Trim the longest match from the end
${variable#pattern}
  Trim the shortest match from the beginning


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 1238 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號