如何"削减"null?

phi*_*urn 11 unix null cut file 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.
Run Code Online (Sandbox Code Playgroud)

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

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

这就是我想要做的:

find . "*" -type f | file -n0iNf - | cut -d<null> -f1
Run Code Online (Sandbox Code Playgroud)

<null>NUL角色在哪里?

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

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

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

rua*_*akh 13

只需指定一个空分隔符:

cut -d '' -f1
Run Code Online (Sandbox Code Playgroud)

(注意:-d和之间的空间''很重要,所以-d空字符串作为单独的参数传递;如果你写-d'',那么它将作为公正传递-d,然后cut会认为你试图-f1用作分隔符,它会抱怨,错误信息"分隔符必须是单个字符".)

  • OSX 上的“cut:错误分隔符”。 (3认同)
  • 这根本不起作用.`cut:bad delimiter`(Mac OS X) (2认同)
  • @Sukima:它对我和OP都很有用,所以很明显说"这根本不起作用"是不正确的.OP指定他正在使用Linux(可能具有特定于Linux的背景 - 事实上,`man file`表示他可以使用`cut`来分割空字符).由于您的情况不同,您可能需要打开一个新问题. (2认同)