如何格式化 stat 的输出以包含空字符?

如何格式化 stat 的输出以包含空字符?

我想通过使用空字符(NUL、\0、...)来分隔文件路径,就像 find -print0 所做的那样。

我正在使用 bash,并且尝试了以下操作但没有成功:

find $1 -print0 > dircontent
cat dircontent | xargs -0 stat --format="%X %Y %Z %f %u %g %i %h \0%n\0%s" > dirstats

看起来像“I”,得到了文字“\”和“0”而不是空字符。

答案1

--format只解析百分比转义并在末尾添加换行符。--printf还解析反斜杠转义并且不添加尾随换行符。

<dircontent xargs -0 stat --printf="%X %Y %Z %f %u %g %i %h \0%n\0%s\0" > dirstats

答案2

我用它//作为分隔符,然后sed -in 's/\/\//\x0/g' dirstats得到我想要的。我仍然更喜欢一个不那么黑客的解决方案。

相关内容