С помощью find
вы должны не объединять команды через конвейер.
У него есть хороший флаг -regex
, которому вы можете передать строку соответствия имени файла:
find. -regextype egrep -regex ".*facility_([0-9]*)\+SOURCE[0-9]*.*" -exec mv {} DIRECTORY \;
Окончательный \;
передает каждое из совпадающих имен файлов в mv
вместо {}
.
Как видите, вам нужно использовать .*
в начале и в конце регулярного выражения, потому что find
нужно обработать на весь путь:
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the regular expression '.*bar.' or '.*b.*3', but not 'f.*r3'.
awk '
NR==FNR{ seq=$0; next }
{
print ">" $1 "_up"
print substr(seq, $2, 5)
print ">" $1 "_down"
print substr(seq, $3, 5)
}
' PF.seq PF.table
Выход:
>Pyrococcus_furiosus_COM1_XCP003685_1_up
ggcga
>Pyrococcus_furiosus_COM1_XCP003685_1_down
gtttg
>Pyrococcus_furiosus_COM1_XCP003685_2_up
agata
>Pyrococcus_furiosus_COM1_XCP003685_2_down
acctg
>Pyrococcus_furiosus_COM1_XCP003685_3_up
gcaat
>Pyrococcus_furiosus_COM1_XCP003685_3_down
gttgg