文件名中的通配符在bash中不起作用
我知道这里有很多(很多!)类似的问题,但我还没有找到一个能解决我问题的。我有以下脚本:文件名中的通配符在bash中不起作用,bash,wildcard,git-bash,Bash,Wildcard,Git Bash,我知道这里有很多(很多!)类似的问题,但我还没有找到一个能解决我问题的。我有以下脚本: #!/bin/bash /* MAIN_CLASS and other declarations here */ numOfDatasets=10 for (( i=1; i <= $numOfDatasets; ++i )) do DATASET_FILE="C:\path\to\file\name_"$i"_100.fa" QUERY_FILE="C:\path\to\fil
#!/bin/bash
/* MAIN_CLASS and other declarations here */
numOfDatasets=10
for (( i=1; i <= $numOfDatasets; ++i )) do
DATASET_FILE="C:\path\to\file\name_"$i"_100.fa"
QUERY_FILE="C:\path\to\file\name_${i}_100_p"*".fasta"
mvn exec:java -Dexec.mainClass="${MAIN_CLASS}" -Dexec.args="${DATASET_FILE} ${QUERY_FILE}"
done
直接在航站楼工作 尝试使用内部
for
循环,循环遍历通配符搜索结果:
for QUERY_FILE in "C:\path\to\file\name_${i}_100_p"*".fasta"; do
/* do stuff with $QUERY_FILE */
done
您正在为
QUERY\u FILE
分配一个字符串值,但我认为您希望它是运行命令的结果。试着这样做:
QUERY_FILE=`ls "C:\path\to\file\name_${i}_100_p"*".fasta" | head -1`
head-1
是指如果您希望匹配*
中的第一个文件,则可以修改该文件以满足您的特定需要
完整示例:
#!/bin/bash
/* MAIN_CLASS and other declarations here */
numOfDatasets=10
for (( i=1; i <= $numOfDatasets; ++i )) do
DATASET_FILE="C:\path\to\file\name_"$i"_100.fa"
QUERY_FILE=`ls "C:\path\to\file\name_${i}_100_p"*".fasta" | head -1`
mvn exec:java -Dexec.mainClass="${MAIN_CLASS}" -Dexec.args="${DATASET_FILE} ${QUERY_FILE}"
done
#/bin/bash
/*这里的MAIN_类和其他声明*/
numOfDatasets=10
for((i=1;我引用glob使其成为文本字符串,而不是expansion@DTSCode谢谢,我编辑了我的答案。尽管这两种方法对我都有效。我不知道如何操作。abcd*
与“abcd*”
几乎不同。for循环只运行一次,并且具有文本值C:\path\to\file\name\u$I\u 100\u p*。fasta
(当然除了扩展的i
之外)我在for循环中用echo$F
测试了它,它打印了我所有的示例文件。但是我刚刚测试了更多,确实有一次迭代,所以*
在echo
中扩展。这意味着我的第一次测试是错误的,你是对的,谢谢!)不,不是这样。如果我使用*.fasta
它会显示所有的文件(包括我的和你的文件)。它只是不把“*”识别为路径的一部分。你说,“我想分配给QUERY\u FILE
的字符串是name\u 1\u 100\u p95.fasta
”。那么为什么不直接分配它呢?QUERY\u FILE=“C:\path\to\FILE\name\u${I}_100_p95.fasta“
。你为什么要使用*
,你想用那个通配符做什么?你是对的,我想举个例子。它可能是name_2_100_p79.fasta
,name_3_100_p89.fasta
等等。我会相应地进行编辑。
#!/bin/bash
/* MAIN_CLASS and other declarations here */
numOfDatasets=10
for (( i=1; i <= $numOfDatasets; ++i )) do
DATASET_FILE="C:\path\to\file\name_"$i"_100.fa"
QUERY_FILE=`ls "C:\path\to\file\name_${i}_100_p"*".fasta" | head -1`
mvn exec:java -Dexec.mainClass="${MAIN_CLASS}" -Dexec.args="${DATASET_FILE} ${QUERY_FILE}"
done