我想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...
作为额外的奖励,iconv
s 将并行运行。
观看介绍视频以了解更多信息:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1