我在兩個單獨的目錄中有一系列文件,我希望彼此匹配。該術語是這樣的:通過for循環匹配兩個文件(Bash)
正向目錄: 1_A_R1_Paired.gz, 1_B_R1_Paired.gz, 2_A_R1_Paired.gz, 2_B_R1_Paired.gz 等
反向目錄: 1_A_R2_Paired.gz, 1_B_R2_Paired.gz , 2_A_R2_Paired.gz, 2_B_R2_Paired.gz 等
我想設置我的for循環,這樣只對匹配的文件執行我的命令S R1和R2,這樣的結果將是:
my_command 1_A_R1_Paired.gz 1_A_R2_Paired.gz > 1_A_R1R2.bam
但不是:
my_command 1_A_R1_Paired.gz 1_B_R2_Paired.gz > 1_AB_R1R2.bam
別人這裏有一個類似的問題:bash: for loop, two variables linked。該解決方案是:
for f in dir1/*.fq; do
b=$(basename "$f")
f2=dir2/"$b".sa
if test -f "$f2"; then
mycommand "$f2" "$f" >"$b".sa.cc
fi
done
不幸的是,這並不適用於我,可能是因爲我的文件沒有相同的基本名稱。有人可以給我一個建議嗎?我是這裏的新手。
我會建議使用'$ {B // R1/R2}',而不是分叉很多'sed'命令...... – twalberg
這個解決方案也行得通,儘管我不確定爲什麼,因爲sed的使用對我來說不太清楚。 – user3652862