如何使用NULL(\ 0)作为GNU排序中的分隔符

ant*_*lex 13 sorting bash

我正在寻找一种方法来排序find正确返回多个目录的结果,以便在bash脚本中进一步处理.因为文件名不能包含NULL(\ 0)字符,我认为这将为管道传输的结果提供一个很好的分隔符sort.

所以这就是我期望的工作方式:

find ./ -maxdepth 1 -type d -iname 'xyz?' -print0 | sort -t $'\0'
Run Code Online (Sandbox Code Playgroud)

但遗憾的是我得到了复杂 sort: empty tab

环顾四周寻找解释时遇到了一个类似的结果,这个结果被认为是正常工作(参见11月26日的卢卡斯评论).在我的情况下(使用GNU sort v 7.4),这似乎是不同的.

我还通过管道输入检查了find的输出,od -c但这只显示结果文件夹按预期分隔为NULL.

有没有人在这里遇到类似的情况,并可能找到一个解决方案或解释为什么\ 0似乎是一个不可能的排序分类?

期待你的回答......

编辑:请注意这里使用find-command作为示例,一种更简单的方法来测试/说明这可能echo "g\0u\0b\0k" | sort -t $'\0'

Ign*_*ams 14

-t字段分隔符.如果要\0用作分隔符,则需要使用-z.