Ich habe ein Verzeichnis, in dem die Dateien von Interesse Übereinstimmung mit diesem Ausdruck:Wie kann ich einen Befehl über Stapel von Dateien ausführen?
ls ../a2i_2_{1..96}M.sorted.DEXseq.txt
../a2i_2_10M.sorted.DEXseq.txt ../a2i_2_25M.sorted.DEXseq.txt ../a2i_2_3M.sorted.DEXseq.txt ../a2i_2_54M.sorted.DEXseq.txt ../a2i_2_69M.sorted.DEXseq.txt ../a2i_2_83M.sorted.DEXseq.txt
../a2i_2_11M.sorted.DEXseq.txt ../a2i_2_26M.sorted.DEXseq.txt ../a2i_2_40M.sorted.DEXseq.txt ../a2i_2_55M.sorted.DEXseq.txt ../a2i_2_6M.sorted.DEXseq.txt ../a2i_2_84M.sorted.DEXseq.txt
../a2i_2_12M.sorted.DEXseq.txt ../a2i_2_27M.sorted.DEXseq.txt ../a2i_2_41M.sorted.DEXseq.txt ../a2i_2_56M.sorted.DEXseq.txt ../a2i_2_70M.sorted.DEXseq.txt ../a2i_2_85M.sorted.DEXseq.txt
../a2i_2_13M.sorted.DEXseq.txt ../a2i_2_28M.sorted.DEXseq.txt ../a2i_2_42M.sorted.DEXseq.txt ../a2i_2_57M.sorted.DEXseq.txt ../a2i_2_71M.sorted.DEXseq.txt ../a2i_2_86M.sorted.DEXseq.txt
../a2i_2_14M.sorted.DEXseq.txt ../a2i_2_29M.sorted.DEXseq.txt ../a2i_2_43M.sorted.DEXseq.txt ../a2i_2_58M.sorted.DEXseq.txt ../a2i_2_72M.sorted.DEXseq.txt ../a2i_2_87M.sorted.DEXseq.txt
../a2i_2_15M.sorted.DEXseq.txt ../a2i_2_2M.sorted.DEXseq.txt ../a2i_2_44M.sorted.DEXseq.txt ../a2i_2_59M.sorted.DEXseq.txt ../a2i_2_73M.sorted.DEXseq.txt ../a2i_2_88M.sorted.DEXseq.txt
../a2i_2_16M.sorted.DEXseq.txt ../a2i_2_30M.sorted.DEXseq.txt ../a2i_2_45M.sorted.DEXseq.txt ../a2i_2_5M.sorted.DEXseq.txt ../a2i_2_74M.sorted.DEXseq.txt ../a2i_2_89M.sorted.DEXseq.txt
../a2i_2_17M.sorted.DEXseq.txt ../a2i_2_31M.sorted.DEXseq.txt ../a2i_2_46M.sorted.DEXseq.txt ../a2i_2_60M.sorted.DEXseq.txt ../a2i_2_75M.sorted.DEXseq.txt ../a2i_2_8M.sorted.DEXseq.txt
../a2i_2_18M.sorted.DEXseq.txt ../a2i_2_32M.sorted.DEXseq.txt ../a2i_2_47M.sorted.DEXseq.txt ../a2i_2_61M.sorted.DEXseq.txt ../a2i_2_76M.sorted.DEXseq.txt ../a2i_2_90M.sorted.DEXseq.txt
../a2i_2_19M.sorted.DEXseq.txt ../a2i_2_33M.sorted.DEXseq.txt ../a2i_2_48M.sorted.DEXseq.txt ../a2i_2_62M.sorted.DEXseq.txt ../a2i_2_77M.sorted.DEXseq.txt ../a2i_2_91M.sorted.DEXseq.txt
../a2i_2_1M.sorted.DEXseq.txt ../a2i_2_34M.sorted.DEXseq.txt ../a2i_2_49M.sorted.DEXseq.txt ../a2i_2_63M.sorted.DEXseq.txt ../a2i_2_78M.sorted.DEXseq.txt ../a2i_2_92M.sorted.DEXseq.txt
../a2i_2_20M.sorted.DEXseq.txt ../a2i_2_35M.sorted.DEXseq.txt ../a2i_2_4M.sorted.DEXseq.txt ../a2i_2_64M.sorted.DEXseq.txt ../a2i_2_79M.sorted.DEXseq.txt ../a2i_2_93M.sorted.DEXseq.txt
../a2i_2_21M.sorted.DEXseq.txt ../a2i_2_36M.sorted.DEXseq.txt ../a2i_2_50M.sorted.DEXseq.txt ../a2i_2_65M.sorted.DEXseq.txt ../a2i_2_7M.sorted.DEXseq.txt ../a2i_2_94M.sorted.DEXseq.txt
../a2i_2_22M.sorted.DEXseq.txt ../a2i_2_37M.sorted.DEXseq.txt ../a2i_2_51M.sorted.DEXseq.txt ../a2i_2_66M.sorted.DEXseq.txt ../a2i_2_80M.sorted.DEXseq.txt ../a2i_2_95M.sorted.DEXseq.txt
../a2i_2_23M.sorted.DEXseq.txt ../a2i_2_38M.sorted.DEXseq.txt ../a2i_2_52M.sorted.DEXseq.txt ../a2i_2_67M.sorted.DEXseq.txt ../a2i_2_81M.sorted.DEXseq.txt ../a2i_2_96M.sorted.DEXseq.txt
../a2i_2_24M.sorted.DEXseq.txt ../a2i_2_39M.sorted.DEXseq.txt ../a2i_2_53M.sorted.DEXseq.txt ../a2i_2_68M.sorted.DEXseq.txt ../a2i_2_82M.sorted.DEXseq.txt ../a2i_2_9M.sorted.DEXseq.txt
ich je einen Befehl über 12 Chargen von 8 Dateien ausgeführt werden soll. So habe ich dieses Skript:
#!/bin/bash
prefix="a2i_2_"
sufix="M.sorted.DEXseq.txt"
for i in {0..7}
do
a=$(($i*12+1))
b=$(($i*12+12))
ls ../$prefix{$a..$b}$sufix
done
Leider ist dies nicht, weil der Arbeits {a $ .. $ b} wird als String und nicht als Folge interpretiert zu werden. So bekomme ich diese Fehler ...
ls: cannot access ../a2i_2_{1..12}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{13..24}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{25..36}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{37..48}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{49..60}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{61..72}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{73..84}M.sorted.DEXseq.txt: No such file or directory
ls: cannot access ../a2i_2_{85..96}M.sorted.DEXseq.txt: No such file or directory
Wie kann ich {$ a .. $ b} auf eine Weise ausdrücken, die als Sequenzen interpretiert werden kann? Oder zumindest, wenn Sie wissen, dass eine alternative Möglichkeit, diese Dateien in Stapeln zu trennen, auch für mich funktioniert.
Als Alternative kann ich die Dateien (oder symbolische Verknüpfungen) in verschiedene Ordner verschieben und den Befehl ausführen, dass ich
#!/bin/bash
prefix="a2i_2_"
sufix="M.sorted.DEXseq.txt"
for i in {0..7}
do
a=$(($i*12+1))
b=$(($i*12+12))
for n in $(seq $a $b)
do
ln -s ../$prefix$n$sufix .
done
# And now I can run the command for each batch ...
awk '{sums[$1] += $2;} END { for (i in sums) print i " " sums[i]; }' *$sufix | sort -k1 > $prefix$a-$b$sufix.sum
rm *$sufix
done
will ... Aber ich mag einen direkteren Weg, um lernen TU es.
Danke für Ihre Zeit.
'xargs -L 12'? –
klingt interessant, wie können Sie Xargs über dieses Problem implementieren? – Geparada
OK, das ist cool. Mit Xargs kann ich Schleifen in Blöcken machen. Zum Beispiel kann ich 'for i in $ (ls ../ *. DXseq.txt | xargs -L 12); echo $ i; fertig '... und damit kann ich grundsätzlich dasselbe machen wie mein letzter Code, aber in ein paar Zeilen. Vielen Dank! – Geparada