Параллельное чтение содержимого заархивированного файла без извлечения

Инструменты Unix несовместимы, вам нужно проверить страницу руководства каждого из них.

Утилиты LVM согласованы, и некоторые (но не все) страницы руководства содержат подробности. Например, из lvs (8) :

Все размеры выводятся в следующих единицах: (h) читаемые человеком, (b) ytes, (s) ectors, (k) ilobytes, (m ) эгабайт, (g) igabytes, (t) erabytes, (p) etabytes, (e) xabytes. Используйте заглавные буквы, чтобы использовать кратное 1000 (S.I.) вместо 1024.

Т.е. b или B - байты, s или S - сектора (из 512 байт), K - 1000 байтов (килобайт SI), k - 1024 байта (кибибайт), M - 1000000 байтов (мегабайт SI), M - 1048576 байтов (мебибайт) и т. д. .

В более общем смысле, b никогда не является битами в контексте размеров файла или диска; обычно это байты, но иногда они могут быть блоками (и размер блоков также зависит от инструмента). Префиксы k / m / g / t / p / e могут означать степень 1000 или степень 1024 в зависимости от инструмента и иногда от заглавных букв. S для секторов, как в LVM, необычно. Другая общая единица измерения (не используемая LVM) - c для байтов; это происходит от персонажа c , еще до того, как многобайтовые символы были распространены.

2
12.12.2016, 13:58
1 ответ

У вас есть конвейер, состоящий из четырех команд:

  • find , в котором перечислены zip-файлы.
  • parallel , который вызывает unzip для извлечения одного файла из каждого zip-файла. Поскольку {} заменяется путем к zip-файлу, вы пытаетесь извлечь файлы типа home / user977828 / stuff / Undetermined_S0_L004_R1_001_fastqc.zip / fastqc_data.txt из архива (если текущий каталог - / home / user977828 / stuff ).
  • crimson , который получает беспорядочные извлеченные файлы на стандартный ввод и вызывается с аргументами fastqc и {} ,
  • less .

parallel заменяет только {} в своих аргументах. Он ничего не может сделать с другими частями вашего конвейера. Если вы хотите вызвать crimson для каждого файла fastqc_data.txt отдельно, вам необходимо передать конвейер из unzip в crimson в качестве аргумент параллельно .

find *_fastqc.zip -type f | sed 's/\.zip$//' |
parallel -j 3 'unzip -c {}.zip {}/fastqc_data.txt | crimson fastqc /dev/stdin' |
less
2
27.01.2020, 22:10

Теги

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