从 shell 脚本中的路径获取文件名的日期部分
get the date part from filname from a path in shell script
我有一个脚本如下
pathtofile="/c/github/something/r1.1./myapp/*.txt"
echo $pathtofile
filename = ${pathtofile##*/}
echo $filename
我一直只有一个 txt 文件作为 2015-08-07.txt 在 ../myapp/ 目录中。所以o/p如下:
/c/github/something/r1.1./myapp/2015-08-07.txt
*.txt
我需要将文件名提取为 2015-08-07。我确实遵循了很多具有相同要求的堆栈溢出答案。最好的方法是什么以及如何从该路径获取文件名的唯一日期部分?
仅供参考:每次以今天的日期执行脚本时,文件名都会更改。
你为获取文件名做了大量工作
$ find /c/github/something/r1.1./myapp/ -type f -printf "%f\n" | sed 's/\.txt//g'
2015-08-07
当你说:
pathtofile="/c/github/something/r1.1./myapp/*.txt"
您正在将文字 /c/github/something/r1.1./myapp/*.txt
存储在变量中。
当您 echo
时,此 *
会展开,因此您会正确地看到结果。
$ echo $pathtofile
/c/github/something/r1.1./myapp/2015-08-07.txt
但是,如果你引用它,你会看到内容确实是*
:
$ echo "$pathtofile"
/c/github/something/r1.1./myapp/*.txt
所以你需要做的是将值存储在数组中:
files=( /c/github/something/r1.1./myapp/*.txt )
这个 files
数组将用这个表达式的扩展填充。
然后,因为你知道数组只包含一个元素,你可以打印它:
$ echo "${files[0]}"
/c/github/something/r1.1./myapp/2015-08-07.txt
然后使用 Extract filename and extension in Bash:
获取名称
$ filename=$(basename "${files[0]}")
$ echo "${filename%.*}"
2015-08-07
我有一个脚本如下
pathtofile="/c/github/something/r1.1./myapp/*.txt"
echo $pathtofile
filename = ${pathtofile##*/}
echo $filename
我一直只有一个 txt 文件作为 2015-08-07.txt 在 ../myapp/ 目录中。所以o/p如下:
/c/github/something/r1.1./myapp/2015-08-07.txt
*.txt
我需要将文件名提取为 2015-08-07。我确实遵循了很多具有相同要求的堆栈溢出答案。最好的方法是什么以及如何从该路径获取文件名的唯一日期部分? 仅供参考:每次以今天的日期执行脚本时,文件名都会更改。
你为获取文件名做了大量工作
$ find /c/github/something/r1.1./myapp/ -type f -printf "%f\n" | sed 's/\.txt//g'
2015-08-07
当你说:
pathtofile="/c/github/something/r1.1./myapp/*.txt"
您正在将文字 /c/github/something/r1.1./myapp/*.txt
存储在变量中。
当您 echo
时,此 *
会展开,因此您会正确地看到结果。
$ echo $pathtofile
/c/github/something/r1.1./myapp/2015-08-07.txt
但是,如果你引用它,你会看到内容确实是*
:
$ echo "$pathtofile"
/c/github/something/r1.1./myapp/*.txt
所以你需要做的是将值存储在数组中:
files=( /c/github/something/r1.1./myapp/*.txt )
这个 files
数组将用这个表达式的扩展填充。
然后,因为你知道数组只包含一个元素,你可以打印它:
$ echo "${files[0]}"
/c/github/something/r1.1./myapp/2015-08-07.txt
然后使用 Extract filename and extension in Bash:
获取名称$ filename=$(basename "${files[0]}")
$ echo "${filename%.*}"
2015-08-07