干货:Linux中使用 Basename 命令实例

系统 Linux
basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。

 [[373356]]

basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。

系统环境

Centos7

如何使用basename命令

在Centos7系统中,已经默认安装了basename命令了,该命令包含在coreutils安装包里。

basename有两种语法:

  1. basename NAME [SUFFIX] 
  2. basename OPTION... NAME... 

<以上代码可复制粘贴,可往左滑>

basename最后一部分。也可以删除任何结尾的后缀。这是一个简单的命令,最基本的是去掉文件名前面的目录并打印出来:

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

<以上代码可复制粘贴,可往左滑>

basename命令默认删除所有结尾的/字符:

  1. [root@localhost ~]# basename /usr/local
  2. local 
  3. [root@localhost ~]# basename /usr/local 
  4. local 

<以上代码可复制粘贴,可往左滑>

默认情况下,每条输出行以换行符(\n)结尾。要以NUL结尾,请使用-z(--zero)选项。

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

<以上代码可复制粘贴,可往左滑>

basename接受多个文件

basename命令可以接受多个名称作为参数。可以使用-a(--multiple)选项,然后使用空格分隔文件列表。例如,要获取/etc/passwd和/etc/shadow的文件名,可以运行:

  1. [root@localhost ~]# basename -a /etc/passwd /etc/shadow 
  2. passwd 
  3. shadow 

<以上代码可复制粘贴,可往左滑>

删除指定结尾的后缀

要从文件名中删除任何结尾的后缀,请将后缀作为第二个参数传递:

  1. [root@localhost ~]# basename /etc/hostname name 
  2. host 
  3. 另一种方法: 
  4. [root@localhost ~]# basename -s name /etc/hostname  
  5. host 

<以上代码可复制粘贴,可往左滑>

上面例子中,指定name为后缀,可以看到输出结果中只显示/后面和name前面的内容了。

通常,此功能用于删除文件的扩展名:

  1. [root@localhost ~]# basename -s .conf  /etc/httpd/conf/httpd.conf 
  2. httpd 
  3. 或者 
  4. [root@localhost ~]# basename /etc/httpd/conf/httpd.conf .conf 
  5. httpd 

<以上代码可复制粘贴,可往左滑>

下面例子,使用-a选项指定多个文件,-s选项指定后缀内容:

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

<以上代码可复制粘贴,可往左滑>

删除末尾后缀的另一种方法是使用-s(--suffix = SUFFIX)选项指定后缀。上面实例中以展现。

使用实例

以下示例显示了如何在bash脚本中使用for循环、mv命令和basename命令,通过将当前目录下面的图片文件,文件扩展名从“ .jpg”替换为“ .jpeg”:

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

<以上代码可复制粘贴,可往左滑>图片

总 结

basename命令的介绍到此为止,希望对你有帮助!

本文转载自微信公众号「 Linux就该这么学」,可以通过以下二维码关注。转载本文请联系 Linux就该这么学公众号。

 

责任编辑:武晓燕 来源: Linux就该这么学
相关推荐

2020-12-07 06:25:14

Linux Truncate 命令

2023-07-04 16:36:03

Linuxcd 命令

2023-07-23 19:26:18

Linuxcat 命令

2010-06-23 09:34:15

basename命令

2023-08-12 15:05:26

Linuxcp 命令

2022-10-25 09:07:28

Linuxxargs命令

2022-11-18 10:16:26

Linuxwc 命令

2018-06-26 09:15:24

Linux命令history

2018-05-16 10:32:06

Linux命令find

2018-08-21 09:00:30

Linuxtop命令

2023-01-13 23:21:29

netcat命令Linux

2010-06-22 13:23:18

Linux at命令详

2022-02-08 12:19:36

LinuxJQ命令

2023-09-14 15:05:33

grep正则表达式

2023-01-11 08:59:33

Linuxtraceroute命令

2021-01-13 09:40:26

Linuxexport命令

2012-05-08 11:11:43

Linuxcrontab命令

2009-06-30 16:55:19

2022-10-18 10:00:09

Linuxtcpdump命令

2010-06-01 19:24:40

SVN命令行
点赞
收藏

51CTO技术栈公众号