Рейтинг:1

Как выполнить цикл для файлов, которые имеют одну и ту же строку перед первым символом подчеркивания?

флаг ke

Я пытаюсь выполнить цикл на Ubuntu, в котором я объединяю два файла в один файл. В каталоге тысячи файлов, все они состоят из пар, имеющих одну и ту же строку символов перед первым символом подчеркивания. Например, каталог содержит следующие файлы:

uce-1348_.nexus.phy.fasta
uce-1348_Sample1.fasta
uce-1611_.nexus.phy.fasta
uce-1611_Sample1.fasta

Я попытался выполнить что-то вроде

для i в *_*.fasta\
делать
кот $i > $i.combined.fasta
сделано

но это, конечно, не работает, так как это не делает объединенные файлы специфичными для строки перед первым символом подчеркивания.Мне нужен объединенный файл uce-1348 и еще один файл uce-1611 (есть еще тысячи файлов, но это небольшой пример того, что я ищу.

Любая помощь будет оценена по достоинству. Я слышал, что вы можете устанавливать строки и шаблоны, но я до сих пор не знаю, как это сделать. Спасибо!

bac0n avatar
флаг cn
Важно ли, в каком порядке файлы объединяются вместе?
Рейтинг:2
флаг ar

Вы можете перебирать файлы, как вы это делали, но тогда вам нужно извлечь начало имени вашего файла, чтобы определить выходной файл.

Тогда вы должны использовать >> добавить в выходной файл. Если вы используете один > он будет перезаписывать содержимое каждый раз.

Итак, используя ваши имена файлов:

для файла в *_*.fasta; делать
    output="${file/_*}.combined.fasta"
    кошка "$ файл" >> "$ вывод"
сделано

Выражение ${файл/_*} использует Расширение параметров оболочки чтобы удалить все после первого «_» в имени файла, чтобы создать имя выходного файла.

Рейтинг:0
флаг cn

Помимо копирования и перемещения ммв также может добавлять содержимое исходного файла к целевому имени.

mmv -a 'uce-*_*' 'uce-#1.combined.fasta'
Рейтинг:0
флаг hr

Вам нужно перебрать один шаблонов и сгенерировать другие имена файлов, используя расширение параметра

Бывший.

для i в *_.nexus.phy.fasta; делать 
  кот "$i" "${i/.nexus.phy/Sample1}" > "${i/_.nexus.phy/.combined}"
сделано

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.