通过换行符连接 xargs 的输出

通过换行符连接 xargs 的输出

我想xargs用新行连接输出。我这样做:

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

我每次只处理一个文件,并将其转换为 UTF-8(系统语言环境)。所有文件*.txt都是一行代码,末尾没有换行符。因此输出的xargs是一堆乱码文本。

如何xargs按 分隔输出项\n

答案1

一个丑陋的解决方案:

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

答案2

您可以尝试:

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

这应该在 xargs 的输出之后、传送到其他命令之前添加一个换行符。

答案3

使用 GNU Parallel 你可以这样做:

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

作为额外的奖励,iconvs 将并行运行。

观看介绍视频以了解更多信息:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关内容