获取目录中唯一文件的完整路径

时间:2020-03-23 13:53:22

标签: bash

我的目录只有一个文件。文件名是随机的,但扩展名是固定的。

myDirectory
|----file12321.txt

是否有一种单行方式来提取该文件的完整路径?

MY_FILE=myDirectory/*.txt

当前输出:

/home/me/myDirectory/*.txt

预期:

/home/me/myDirectory/file12321.txt

3 个答案:

答案 0 :(得分:2)

使用readlink获取规范的路径。

MY_FILE=$(readlink -f myDirectory/*.txt)

如果只需要myDirectory/file12321.txt部分,则可以运行一个命令,使shell展开*,例如:

MY_FILE=$(printf "%s\n" myDirectory/*.txt)

答案 1 :(得分:1)

如果可以确定只有一个文件,则可以使用一个数组:

MY_FILE=( /home/me/myDirectory/*.txt )

文件名扩展在数组定义内进行,但在设置普通变量的值时不进行。您可以像使用普通变量一样使用数组,因为它将提供第一个元素的值:

$ foo=(1 2 3)
$ echo "$foo"
1

答案 2 :(得分:0)

MY_FILE=$(pwd)/$(ls myDirectory/*.txt)
# $MYFILE == /home/me/myDirectory/file12321.txt