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

时间:2011-12-02 05:17:58

标签: regex bash unix

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

感谢任何帮助!

6 个答案:

答案 0 :(得分: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##*/}

输出;

file
file
file
file

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

答案 1 :(得分:5)

也许使用basename $file_path

答案 2 :(得分:2)

可能最简单的方法是:

PATH=/my/big/long/path/to/a/little/bitty/file
FILENAME=`basename $PATH`
echo $FILENAME

会输出'file'

答案 3 :(得分:1)

我认为您正在寻找basename

答案 4 :(得分:1)

你应该引用basename的输入及其输出,以防它们中的任何一个具有有意义的字符,如空格。

file_basename="$(basename "$filename")"

答案 5 :(得分:0)

在awk命令下面的

执行:

259> which cna_update
/vobs/cna/bin/cna_update
262> which cna_update|awk -F"/" '{print $NF}'
cna_update