Я пытаюсь генерировать отдельные .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
Кто-либо может помочь?
Самый простой случай:
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
Также Ваш md5sum
команда не печатает имя файла, потому что каждый файл читается из оболочки из-за <
, перенаправление, и md5sum
не может возможно знать исходное имя файла, так как это - feeded содержание файла непосредственно.
Поэтому, если Вы хотите обработать все файлы в текущем рабочем каталоге рекурсивно, можно использовать эту команду вместо этого:
find . -type f -name "*.fastq.gz" -exec sh -c "md5sum {} > {}.md5" \;