使用shell腳本判斷文件後綴的方法實例

shell腳本判斷文件後綴

有時候需要判斷文件名後綴來區分文件類型,進而進行不同的操作。以下是獲取文件名後綴和文件名前綴的兩個函數,由於shell腳本函數隻能返回0-255,為瞭將結果返回,就直接使用echo輸出,可以用$()進行捕獲。

#!/bin/bash

# --------------------------------------------------------------------------- #
# 獲取文件名後綴
# Parameter1: 文件名
# output: Yes
# return: None
# --------------------------------------------------------------------------- #
function FileSuffix() {
    local filename="$1"
    if [ -n "$filename" ]; then
        echo "${filename##*.}"
    fi
}

# --------------------------------------------------------------------------- #
# 獲取文件名前綴
# Parameter1: 文件名
# output: Yes
# return: None
# --------------------------------------------------------------------------- #
function FilePrefix() {
    local filename="$1"
    if [ -n "$filename" ]; then
        echo "${filename%.*}"
    fi
}

使用示例:

# --------------------------------------------------------------------------- #
# 判斷文件後綴是否是指定後綴
# Parameter1: 文件名
# parameter2: 後綴名
# output: None
# return: 0: 表示文件後綴是指定後綴;1: 表示文件後綴不是指定後綴
# --------------------------------------------------------------------------- #
function IsSuffix() {
    local filename="$1"
    local suffix="$2"
    if [ "$(FileSuffix ${filename})" = "$suffix" ]; then
        return 0
    else
        return 1
    fi
}

file="demo.txt"

IsSuffix ${file} "txt"
ret=$?

if [  $ret -eq 0 ]; then
    echo "the suffix of the ${file} is txt"
fi

附shell提取文件後綴名,並判斷其是否為特定字符串

如果文件是 .css文件 或 .js文件,則進行處理。

file=$1
if [ "${file##*.}"x = "css"x ]||[ "${file##*.}"x = "js"x ];then

    do something
fi

註意:

1> 提取文件後綴名: ${file##*.}

    ##是貪婪操作符,從左至右匹配,匹配到最右邊的.號,移除包含.號的左邊內容。
2> 是=,而且其兩邊有空格,如果沒有空格,會報錯

3> 多加瞭x,是為瞭防止字符串為空時報錯。

查找當前目錄下文件名中包含.py,.sh,.css,.js,.html時,

for n in `find . -name "*.py" -o -name "*.sh" -o -name "*.css" -o -name "*.js" -o -name "*.html"`; do

   something
done

註意:

1> 查找當前目錄下文件名末尾字符為.py,或.sh,或.css,或.js,或.html的文件,並處理

總結 

到此這篇關於使用shell腳本判斷文件後綴的文章就介紹到這瞭,更多相關shell腳本判斷文件後綴內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: