在Bash脚本中使用Linux Basename命令

时间:2020-03-05 15:25:57  来源:igfitidea点击:

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命令打印除上一个组件之外的所有路径。