Генерируйте отдельный .md5 файл для каждого .fastq файла в каталоге?

Я пытаюсь генерировать отдельные .md5 файлы для каждого .fastq файла в каталоге. Я нашел решения генерировать единственный .md5 файл для многих файлов, но это не то, что я ищу.

Я имею file1.fastq, file2.fastq, file3.fastq и хочу генерировать file1.md5, file2.md5, file3.md5.

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

Я также попробовал следующий код:

find . -type f -name "*.fastq.gz" -exec sh -c "md5sum < {} > {}.md5" \;

Это правильно генерирует .md5 файл для каждого .fastq файла, но .md5 содержание файла является неправильным, т.е. Я добираюсь 64399513b7d734ca90181b27a62134dc -

вместо 64399513b7d734ca90181b27a62134dc testfile.fastq

Кто-либо может помочь?

2
задан 29 January 2016 в 14:09

2 ответа

Самый простой случай:

for file in *fastq; do md5sum "$file" > "$file".md5; done

, Который, однако, создаст имена файлов как file1.fastq.md5. Расширения в основном не важны здесь, так, чтобы не была проблема, но если Вы предпочитаете file1.md5, делают это вместо этого:

for file in *fastq; do md5sum "$file" > "${file//.fastq}".md5; done
5
ответ дан 2 December 2019 в 01:33

Также Ваш md5sum команда не печатает имя файла, потому что каждый файл читается из оболочки из-за <, перенаправление, и md5sum не может возможно знать исходное имя файла, так как это - feeded содержание файла непосредственно.

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

find . -type f -name "*.fastq.gz" -exec sh -c "md5sum {} > {}.md5" \;
3
ответ дан 2 December 2019 в 01:33

Другие вопросы по тегам:

Похожие вопросы: