【问题标题】:How can I cause `ls -l` output to be comma-separated?如何使“ls -l”输出以逗号分隔?
【发布时间】:2019-05-21 14:27:28
【问题描述】:

我有一个场景,在 unix 中,当您列出目录中的所有文件时,输出是空格分隔的。我怎样才能获得逗号分隔的输出?

...所以,而不是 ls -l 返回(就像现在一样)

drwxr--rw- 1 shravan.usersgroup 290 DEC 21 10:00 sample.txt
drwxr--rw- 1 shravan.usersgroup 150 DEC 21 10:00 demo.txt

...我怎样才能得到以下内容?

drwxr--rw- ,1, shravan.usersgroup ,290, DEC 21 ,10:00 ,sample.txt
drwxr--rw- ,1, shravan.usersgroup ,150 ,DEC 21 ,10:00 ,demo.txt

【问题讨论】:

  • 以编程方式完全使用ls并不是一个好习惯。如果你使用find -printf,你可以指定任何你想要的格式字符串,包括一个带逗号的字符串,如ParsingLs中所述。
  • 更直接地,关于提出一个广受好评的问题——许多以英语为母语的人将全大写理解为大喊大叫,这是不礼貌的;并且标题应该具有足够的描述性,以便某人通过阅读它知道您的问题(而不仅仅是它是关于什么的)。我已尝试进行编辑以修复这些错误。
  • (顺便说一句,关于使用 UNIX 工具的一般问题,我们的姊妹网站 Unix & Linux 通常更合适;StackOverflow 专门针对“软件开发独有”的问题)。

标签: shell unix


【解决方案1】:

编辑:阅读下面的 cmets。

试试下面的东西,

ls --format=commas

它应该适合你!

这将打印以逗号分隔的文件名。

如果你想获得文件权限和其他参数,你需要稍微修改你的逻辑。

我希望这会有所帮助!

【讨论】:

  • 我很高兴它有效!请采纳答案,以便他人日后受益!
  • 如果文件名包含空格,这将产生不正确的输出。
  • @user1934428 感谢您提出好的解决方案。我已经更新了答案。
  • 太棒了!这对我来说可以。我只想要用逗号分隔的文件名列表。
【解决方案2】:

在使用 GNU find 的系统上,以下生成的输出在字段之间只有逗号(没有空格):

find . -maxdepth 1 -printf '%M,%n,%u.%g,%s,%Ax,%AX,%p\n'

还可以使用 GNU stat 生成文件及其元数据的逗号分隔描述:

stat -c '%A,%h,%U.%G,%s,%y,%n' *

Why you shouldn't parse the output of lsHow can I get a file's permissions (and other metadata) without parsing ls -l output?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多