Если я понимаю, что вы пытаетесь сделать, вам нужно еще несколько шагов, чтобы изолировать первую часть имени файла (например, ERR034597
) и ген (например, MTCYB
), прежде чем записывать информацию в depths
. Вам также необходимо учитывать, заменяете ли вы содержимое depths
на каждой итерации (например, используя >
) или Добавляя к depths
на >>
.
Поскольку ваш тег [Linux], все, что мы можем предположить, это оболочка POSIX, а не расширенная оболочка, такая как bash. Чтобы удалить расширение .sam
из filename
, а затем разделить его на первую часть и ген до получения количества строк, вы можете сделать что-то похожее на следующее:
#!/bin/sh
:> depths # truncate depths (optional - if required)
for i in genes/*.sam; do # loop over all .sam files
filename="$(basename "$i")" # remove path from name
filename="${filename%.sam}" # trim .sam extension from name
gene="${filename##*.}" # trim to last '.' save as gene
filename="${filename%.$gene}" # remove gene from end of name
n_rows=$(wc -l < "$i") # get number of lines in file
echo "$filename $gene $n_rows" >> depths # append vales to depths
done
Что приведет к depths
, содержащий строки, похожие на:
ERR034597 MTCYB 92
(где тестовый файл содержал 92 строки)
Посмотрите все и дайте мне знать, если у вас возникнут дополнительные вопросы.