我必須回圈瀏覽檔案夾中存在的檔案,但我不想回圈瀏覽具有特定模式(“反向”)的檔案。這是代碼
謝謝
DIRECTORY=/Users/Qi.Wang/projects/CH12F3/data/CH12F3.LAM-HTGTS_mMYC.220512
outputDir=/Users/Qi.Wang/projects/CH12F3/
pw=$(pwd)
cat blank.txt > ./config.txt
c="$pw/config.txt"
o=0
for i in $DIRECTORY/*.fna; do
((o=o 1))
s=${i##*/}
b=${s%.fna}
b="${o}_$(echo $b | awk '{ gsub(/_PairEnd /, " " ); print $1 }')"
outputDirs="$outputDir$b"
printf "%s\t" $b >> ./config.txt
printf "%s\t" $s >> ./config.txt
cat end.txt >> ./config.txt
printf "perl /Users/andy/projects/HTGTS/pipeline/align_tools/TLPpipeline.pl %s %s which=%s assembly=mm9 blatopt=mask=lower outdir=/%s -skipred -skipredadd -skipblu -skipbluadd \n" $c $DIRECTORY $o $outputDirs >> ./command.sh
done
我還有另一個小問題。當我 printf outdirs=%s 列印的變數是 $outputDir,它以“/”開頭,但在 printf 列印后,看起來 / 不再存在。
uj5u.com熱心網友回復:
您的awk命令放置了空格$b,因此$outputDirs將包含空格。因此,您需要參考它以使其成為printf. 您還應該參考所有其他變數引數。
此外,由于您正在創建perl命令列,因此您希望outdir=%s成為單個引數,因此您也應該在其周圍加上單引號。
printf "perl /Users/andy/projects/HTGTS/pipeline/align_tools/TLPpipeline.pl '%s' '%s' 'which=%s' assembly=mm9 blatopt=mask=lower 'outdir=/%s' -skipred -skipredadd -skipblu -skipbluadd \n" "$c" "$DIRECTORY" "$o" "$outputDirs" >> ./command.sh
要跳過Reverse名稱中包含的檔案,請啟用擴展通配符并使用不匹配的模式。
shopt -s extglob
for i in "$DIRECTORY"/!(*Reverse*).fna; do
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492622.html
上一篇:從陣列中洗掉包含特定字母的元素
