从Unix中的完整路径获取文件名

Mas*_*son 2 regex unix bash

我试图从我的bashrc中的函数的参数的完整路径获取文件的名称.我不知道任何正则表达式,所以我有点迷茫.我知道我想获得最后一次正斜线并在之后使用所有内容,但我不太确定如何去做.然后我想将它存储在我的函数中的变量中,稍后我将使用它.

任何帮助表示赞赏!

hav*_*exz 10

最快的方法是使用变量替换

f1=/my/big/long/path/to/a/little/bitty/file
f2=./my/big/long/path/to/a/little/bitty/file
f3=my/big/long/path/to/a/little/bitty/file
f4=file

echo ${f1##*/}
echo ${f2##*/}
echo ${f3##*/}
echo ${f4##*/}

# This is how you get value out
filename=${f1##*/}
Run Code Online (Sandbox Code Playgroud)

输出;

file
file
file
file
Run Code Online (Sandbox Code Playgroud)

您可以使用,basename但这将会很慢,因为它将启动一个新的子进程.

  • 当路径名是以"/"结尾的目录时,其行为与basename不同.根据使用情况,这可能是也可能不是问题.`basename/foo/bar /`输出**bar**而``x =/foo/bar /; echo $ {x ##*/}`什么都不输出. (3认同)

dmi*_*ner 5

也许用 basename $file_path