Присоединиться к выводу xargs с помощью новых строк

Я хочу присоединиться к выходу xargs вывод по новым строкам. Я сделаю это:

find . -name '*.txt' | xargs -n 1 iconv -f UTF-16 | ...other-commands...

Я беру один файл за раз и конвертирую его в UTF-8 (язык системы). Все *.txt однострочные без символа перевода строки в конце. Так что выход xargs это беспорядок текста.

Как вы разделяете предметы xargs вывод по \n?

3 ответа

Решение

Некрасивое решение:

find . -name '*.txt' | { xargs -n 1 -I_ bash -c 'iconv -f UTF-16 _;echo '; }| ...other-commands...

Используя GNU Parallel, вы могли бы сделать:

find . -name '*.txt' | parallel -k "iconv -f UTF-16 {}; echo" | ...other-commands...

В качестве дополнительного бонуса iconvS будет работать параллельно.

Посмотрите вступительные видео, чтобы узнать больше: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Вы можете попробовать:

find . -name '*.txt' | (xargs -n 1 iconv -f UTF-16; echo; ) | ...other-commands...

Это должно добавить новую строку после вывода xargs, перед тем, как отправлять другие команды.

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