Присоединиться к выводу 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...
В качестве дополнительного бонуса iconv
S будет работать параллельно.
Посмотрите вступительные видео, чтобы узнать больше: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Вы можете попробовать:
find . -name '*.txt' | (xargs -n 1 iconv -f UTF-16; echo; ) | ...other-commands...
Это должно добавить новую строку после вывода xargs, перед тем, как отправлять другие команды.