6

У меня есть каталог, полный .gz , я хочу расширить каждый архив параллельно с GNU параллельно. Однако я ничего не добился.

Я старался

parallel 'gunzip {}' ::: `ls *.gz`
parallel gunzip `ls *.gz`

без результатов, bash говорит мне:

/bin/bash: archive1.gz: command not found
...

Что я делаю неправильно?

Спасибо

2 ответа2

6

Я нашел это, что предлагает использовать флаг --gnu :

parallel --gnu gunzip  ::: *gz

Если это работает, вы должны либо удалить /etc/parallel/config либо изменить его содержимое на --gnu а не --tollef (как root):

echo "--gnu" > /etc/parallel/config

Кроме того, никогда не анализируйте вывод ls ., используйте globbing как у меня выше или find вместо этого:

find . -name "*gz*" -print0 | parallel -q0 gunzip 
0

Делать это работает:

   ls *.gz | parallel -t gunzip

Опция -t не обязательна, но полезна, поскольку показывает команды, которые выполняются на stderr.

Я не уверен, что вы делаете что-то не так ::: должно работать (это должно быть эквивалентно), но даже примеры на странице руководства не работают для меня.

Обновление: флаг --gnu заставляет его работать, как сказал тердон.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .