Bash
如何在 mac 終端中一次性為文件夾中的多個文件執行命令?
如何在 mac 終端中為文件夾中的多個文件執行相同的命令?這些文件被命名為
24538_7#1_paired1.fq
,24538_7#1_paired2.fq
,24538_7#2_paired1.fq
,24538_7#2_paired2.fq
,24538_7#3_paired1.fq
,24538_7#3_paired2.fq
, 等等。命令是:
STAR --runThreadN 12 --genomeDir indices/STAR --twopassMode Basic --readFilesIn data/24538_7#1_paired1.fq data/24538_7#1_paired2.fq --outFileNamePrefix results/STAR/
由於文件名涉及計數器,因此顯然需要更改文件名。
我試圖編寫命令,但它給出了分段錯誤。我對命令的努力如下:
for file in 24538_7#*.fq; do STAR --runThreadN 12 --genomeDir indices/STAR --twopassMode Basic --readFilesIn data/"${file%.fq}_paired1.fq" data/"${file%.fq}_paired2.fq" --outFileNamePrefix results/STAR/ ; done
(PS-我使用MacOS)
循環遍歷所有
paired1.fq
文件,對於每個這樣的文件,使用名稱來計算相應paired2.fq
文件的名稱。然後用這些呼叫你的程序:for paired1 in data/*paired1.fq; do paired2="${paired1%1.fq}2.fq" # remove 1.fq from end of name and replace with 2.fq if [ ! -f "$paired2" ]; then printf 'Missing file:\t%s\n' "$paired2" >&2 continue fi prefix="${paired1%_*}" # remove last underscore and everything after prefix="${prefix##*/}" # remove directory name from prefix # If $paired1 is the string "data/24538_7#1_paired1.fq", then # $prefix should now be "24538_7#1" mkdir -p "results/STAR/$prefix" STAR --runThreadN 12 --genomeDir indices/STAR --twopassMode Basic \ --readFilesIn "$paired1" "$paired2" \ --outFileNamePrefix "results/STAR/$prefix/" done