在Bash脚本中使用Linux Basename命令
Linux中的BaseName命令在文件路径中打印最终组件。
这在我们希望从长文件路径中提取文件名的Bash脚本中特别有用。
让我用一些例子向我们展示。
Basename命令
basename命令有两种语法。
第一个涉及后缀:
basename PATH [suffix]
第二个允许我们添加选项:
basename OPTION PATH
我们无法将选项与后缀组合。
尚未混淆。
按照示例,然后你明白我想说的话。
使用带有文件路径的BaseName命令将提供文件名:
basename /home/user/data/filename.txt filename.txt
BaseName命令实际上非常愚蠢。
它并没有真正识别文件路径。
它只是寻找斜线(/)并打印最后一次斜线后的任何内容。
例如,如果我通过删除文件名来运行上面的示例,这就是它会产生的东西。
basename /home/user/data data
用后缀删除文件扩展名
Bash命令的主要使用是从文件路径中提取文件名。
我们还可以在提取文件名时删除文件扩展名。
只需提及我们要从输出结束中删除的内容。
所以让我们说,你想从filename.txt删除.txt。
只需在Basename命令的末尾添加它:
basename /home/user/data/filename.txt .txt filename
我们还可以使用-s选项后缀:
basename -s .txt /home/user/data/filename.txt filename
从输入的最终组件的末尾删除后缀。
它并没有真正弄清楚文件的扩展。
如果我们提供TXT(没有点)而不是.txt,我们将获得"文件名"。
(结束时的点)。
此外,如果我们提供的后缀不是组件末尾的后缀,则输出保持似乎没有后缀。
basename /home/user/data/filename.txt name filename.txt
使用具有多个路径的BaseName
使用选项-a
,我们可以同时使用多个路径。
basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt filename1.txt filename2.txt
我们可以使用Suffix Option-s
与-a
,但有一些限制。
我们只能为所有文件路径提供一个后缀。
basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt filename1 filename2
你不能分配个人足够的足够。
它不起作用。
我们还可以将输出分隔为null而不是使用-z
选项的换行符。
使用Bash脚本中的Linux DirName命令[示例]
Linux中的dirname命令从文件路径中提取目录路径。
了解在Bash脚本中使用DirName命令的一些实际示例。
igi Prakashlinux手册
在Bash脚本中使用BaseName
我展示了Basename命令的一些示例。
让我们看看Bash脚本中的一些基本名称的示例。
假设我们有一个文件路径变量,我们希望将文件名从变量中的路径存储。
这可能是一个简单的脚本:
pathname="/home/dir/data/filename" result=$(basename "$pathname") echo $result
另一个例子是我们要重命名文件扩展的位置。
当然,我们可以使用重命名命令批量重命名文件,但这只是一个例子。
因此,我用这个示例脚本写了替换文件扩展的目的:
for file in *; do if [ -f $file ]; then mv $file `basename $file .`. fi done
我们是否注意到我在Bash脚本中查看了检查是否是文件,以便它不会更改匹配目录?
我们可以使用类似于上面的脚本:
./myscript.sh html htm
它会将当前目录中的所有文件重命名为HTMHTML。
BaseName命令与DirName命令辅以。
与BaseName不同,DirName命令打印除上一个组件之外的所有路径。