加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

basename是一个命令行中实用的小工具

发布时间:2023-10-28 11:36:50 所属栏目:Linux 来源:网络
导读:   basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。



  系统环境



  Centos7



  在Centos7系统中,已经默认安装了basename命令了,该命令
  basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。
 
  系统环境
 
  Centos7
 
  在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
 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章