basename返回一个字符串参数的基本文件名称。
语法:
basename String [ Suffix ]
描述
basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,并将剩余的基本文件名称写至标准输出。
basename String [ Suffix ]
描述
basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,并将剩余的基本文件名称写至标准输出。
basename 命令应用以下创建基本文件名称的规则:
如果 String 参数是 //(双斜杠) 或如果 String 参数包含的都是斜杠字符,则将字符串更改为单个 /(斜杠)。跳过步骤 2 到 4 从指定字符串除去任何拖尾的 / 字符。
如果在 String 参数中剩余任何 / 字符,则除去字符串的前缀直到(包含)最后一个 / 字符。
如果指定 Suffix 参数,且它和字符串中的剩余的字符相同,则不修改此字符串。
如果在 String 参数中剩余任何 / 字符,则除去字符串的前缀直到(包含)最后一个 / 字符。
如果指定 Suffix 参数,且它和字符串中的剩余的字符相同,则不修改此字符串。
如果指定 Suffix 参数,且它和字符串中所有字符都不相同,但和字符串的后缀相同,则除去指定后缀
例如,输入:
basename /home/oracle/1.txt 1.txt
结果是: 1.txt
结果是: 1.txt
basename /home/oracle/1.txt .txt
结果是:1
接下来做一些测试:
>[/home/service/hs/temp]$basename 1.txt.old
1.txt.old
>[/home/service/hs/temp]$basename /1/1.txt.old
1.txt.old
>[/home/service/hs/temp]$basename /home/home///// 1
home
>[/home/service/hs/temp]$basename /home/home1//// 1
home
>[/home/service/hs/temp]$basename /home/home1 1
home
>[/home/service/hs/temp]$basename /home/home1 2
home1
>[/home/service/hs/temp]$basename /home/home1 1 2
basename: too many arguments
Try `basename --help' for more information.
>[/home/service/hs/temp]$basename /home/home1/123/ 3
12
>[/home/service/hs/temp]$basename /home/home1/124/ 3
124
目录下有同名的文件
1.c 1.o 1.x
用命令重名成
1.c.bak 1.o.bak 1.x.bak
>[/home/service/hs/temp]$find . -name "1.[cox]" |xargs -i basename {}|xargs -t -i mv {} {}.bak
mv 1.c 1.c.bak
mv 1.o 1.o.bak
mv 1.x 1.x.bak