Linux系統中的basename命令使用例項

夢共裡醉發表於2021-08-06
basename是一個 行中實用的小工具,可從給定的檔名中刪除目錄和字尾。
系統環境

7

如何使用basename

在Centos7系統中,已經預設安裝了 basename命令了,該命令包含在 coreutils安裝包裡。
Linux中的basename命令使用例項Linux中的basename命令使用例項
basename有兩種語法:

basename NAME [SUFFIX]
basename OPTION... NAME...

basename最後一部分。也可以刪除任何結尾的字尾。這是一個簡單的命令,最基本的是去掉檔案明前面的目錄並列印出來:

[root@localhost ~]# basename /etc/yum.repos.d/CentOS-Base.repo 
CentOS-Base.repo

basename命令預設刪除所有結尾的 /字元:

[root@localhost ~]# basename /usr/local/
local
[root@localhost ~]# basename /usr/local
local

預設情況下,每條輸出行以換行符(\n)結尾。要以NUL結尾,請使用-z(--zero)選項。

[root@localhost ~]# basename -z /usr/local
local[root@localhost ~]#

Linux中的basename命令使用例項Linux中的basename命令使用例項

basename接受多個檔案

basename命令可以接受多個名稱作為引數。可以使用-a(--multiple)選項,然後使用空格分隔檔案列表。例如,要獲取/etc/passwd和/etc/shadow的檔名,可以執行:

[root@localhost ~]# basename -a /etc/passwd /etc/shadow
passwd
shadow
刪除指定結尾的字尾

要從檔名中刪除任何結尾的字尾,請將字尾作為第二個引數傳遞:

[root@localhost ~]# basename /etc/hostname name
host
另一種方法:
[root@localhost ~]# basename -s name /etc/hostname 
host

上面例子中,指定name為字尾,可以看到輸出結果中只顯示 /後面和 name前面的內容了。
Linux中的basename命令使用例項Linux中的basename命令使用例項
通常,此功能用於刪除檔案的副檔名:

[root@localhost ~]# basename -s .conf  /etc/httpd/conf/httpd.conf
httpd
或者
[root@localhost ~]# basename /etc/httpd/conf/httpd.conf .conf
httpd

Linux中的basename命令使用例項Linux中的basename命令使用例項
下面例子,使用-a選項指定多個檔案,-s選項指定字尾內容:

[root@localhost ~]# basename -a -s .conf /etc/sysctl.conf /etc/httpd/conf/httpd.conf 
sysctl
httpd

刪除末尾字尾的另一種方法是使用-s(--suffix = SUFFIX)選項指定字尾。上面例項中以展現。

使用例項

以下示例顯示瞭如何在bash 中使用for迴圈、mv命令和basename命令,透過將當前目錄下面的圖片檔案,副檔名從“ .jpg”替換為“ .jpeg”:

[root@localhost test]# vim convert.sh 
#!/bin/bash
for file in *.jpg
do
  mv "$file" "$(basename $file .jpg).jpeg"
done

Linux中的basename命令使用例項Linux中的basename命令使用例項
Linux中的basename命令使用例項Linux中的basename命令使用例項

總結

basename是一個命令列實用程式,可從給定的檔名中刪除目錄和字尾。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2785541/,如需轉載,請註明出處,否則將追究法律責任。

相關文章