如何“削减”null?

时间:2012-03-24 01:43:36

标签: file unix null cut nul

Unix'file'命令有一个-0选项,用于在文件名后输出空字符。据说这可以用于'cut'。

来自man file

-0, --print0
         Output a null character ‘\0’ after the end of the filename. Nice
         to cut(1) the output. This does not affect the separator which is
         still printed.

(注意,在我的Linux上,不会打印'-F'分隔符 - 这对我来说更有意义。)

如何使用'cut'从'file'的输出中提取文件名?

这就是我想要做的事情:

find . "*" -type f | file -n0iNf - | cut -d<null> -f1

其中<null>是NUL字符。

嗯,这就是我想要做的,我想要做的是从目录树中获取具有特定MIME类型的所有文件名。我使用grep(未显示)。

我想处理所有合法的文件名,而不是卡在冒号的文件名上,例如,在他们的名字中。因此,NUL会很棒。

我认为非切割解决方案也很好,但我不想放弃一个简单的想法。

1 个答案:

答案 0 :(得分:11)

只需指定一个空分隔符:

cut -d '' -f1

(注意:-d''之间的空格很重要,因此-d和空字符串作为单独的参数传递;如果你写{{1}然后,它将仅作为-d''传递,然后-d会认为您正在尝试使用cut作为分隔符,它会抱怨,并显示错误消息“分隔符必须是单个字符”。)