格式化 ls -l 输出到管道分隔文件

1 ls text-formatting

我对 Unix 相当陌生,可以使用一些帮助。当我执行ls -l命令(实际上ls -alR)并将输出通过管道传输到文件时,有空格用于分隔返回的 ls 字段。我想要实现的是通过 Tab 或管道字符(两者都应该工作)来分隔 ls 字段。我开始查看pr命令并用制表符替换空格,但这不起作用,因为 ls 输出中有不同数量的空格,这导致导入此文件时出现错误字段。

m0d*_*lar 5

如果您稍后要解析此输出,我会劝阻它。有关原因的详细说明,请参阅此页面。在任何情况下,使用 获取您想要的信息都非常困难ls,尤其是在文件名中有空格或其他特殊字符的情况下。如果您只想构建一个 csv 或其他东西,一个更好的选择是使用 此命令的-printf选项find.应该让您开始:

find . -printf "%M|%n|%u|%s|%P\n" > output
Run Code Online (Sandbox Code Playgroud)

请注意,这将像您的ls命令一样从起始目录递归。它将权限、链接计数、所有者、组、大小和文件名转储到一个文件中,这些文件的字段由管道分隔。查看手册页find了解更多信息。