我已经做到了这一点:wc --files0-from=FILE
让我们获取文件列表的字数。此列表中的每个条目都必须以 ASCII NUL 字符结尾。
问题:一种设置终止字符的方法,例如手动设置NUL,或者其他什么?我在这里找到了这个[引用自输出info wc
]:
find', using its
... 使用 GNU -print0' 谓词生成 ASCII NUL 终止文件名列表。
我发现有人说每个文件名都以 ASCII NUL 字符结尾。比如说 的输出,这是否适合ls
?我知道,不应该解析ls
,但是将输出写入文件以供wc
下次读取会很好。
答案1
ls
每个文件名以换行符 ( \n
) 结尾,而不是 NUL ( \0
) (如果其标准输出不是终端)。
使用 NUL 作为分隔符列出当前目录中的文件的方法是:
find . -maxdepth 1 -print0
。
这也将匹配以句点开头的文件。要忽略它们,请使用:
find . -maxdepth 1 \! -name '.*' -print0
其他方式可能是:
ls | tr '\n' '\0'
或者
printf '%s\0' *
正如 @ChrisDown 在他的评论中指出的,如果当前目录中包含文件名,则只有find
和printf
选项才能正确完成工作。\n
如果这不是你的情况(事实上,我想知道是否真的有人在文件名中使用换行符),那么这三个是等效的。