$ script.sh -i /storage/testFile
-i
存储 的路径/storage/testFile/
。
我想迭代testFile
.一切都很顺利,但我想让这段代码更清晰,并添加一个用于输出和其他检查的目录。
我的代码片段是:
for f in $inDir/*.vcf; do
if [ -f $f ]; #check if file is true or exists
then
if [ ${f: -4} == ".vcf" ] # check if the file ends with .vcf
then
convert2annovar.pl -format vcf4 "$f" > ./"$f".avinput #run my code
fi
fi
done
问题:
echo $f
返回/storage/testFiles/test.vcf
。如何仅test.vcf
在循环迭代时获取for
?
答案1
您需要使用basename
:
Synopsis
basename NAME [SUFFIX]
basename OPTION
Description
Print NAME with any leading directory components removed. If
specified, also remove a trailing SUFFIX.
所以:
$ basename /storage/testFiles/test.vcf
test.vcf
另外,如果你需要相反的,你可以使用dirname
:
$ dirname /storage/testFiles/test.vcf
/storage/testFiles