我的目录只有一个文件。文件名是随机的,但扩展名是固定的。
myDirectory
|----file12321.txt
是否有一种单行方式来提取该文件的完整路径?
MY_FILE=myDirectory/*.txt
当前输出:
/home/me/myDirectory/*.txt
预期:
/home/me/myDirectory/file12321.txt
答案 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