【问题标题】:get all files from a directory without details从没有详细信息的目录中获取所有文件
【发布时间】:2012-10-15 10:07:38
【问题描述】:

我发现了

ls -AF /var/ |grep \/$

帮助我在没有更多信息的情况下从目录中查找所有目录。 现在我需要完全相反 - 显示所有文件而没有任何进一步的信息,只是每行中的文件名

file1
file2
file3

并过滤目录,因为那些 - 我不需要

【问题讨论】:

  • @piokuc 在这种情况下,ls 的联机帮助页将如何提供帮助?

标签: linux ls


【解决方案1】:

只需使用-v 开关grep 来反转匹配:

ls -AF /var/ |grep -v /$ 

【讨论】:

    【解决方案2】:

    或者使用查找:

    find -maxdepth 1 -type f /var/
    

    【讨论】:

    • 该命令有几个问题。路径丢失,-maxdepth 必须在 -type 之前,并且它没有给出 OP 想要的(只显示没有路径的文件名)
    • path 不是强制性的,但在-type 之前需要-maxdepth
    • path 是必需的,如果你的目标目录不是 pwd,这个问题似乎就是这种情况。
    • 抱歉,没有可用于测试的终端。无论如何,洛萨克劳斯的回答更好,不认为尾随 / 和开头 ./ 会成为 OP 的问题。
    【解决方案3】:

    为了查找匹配某个表达式的文件,存在find。它的手册页非常好,还包括一些有趣的例子。仅获取您可以使用的目录的文件:

    find /var -maxdepth 1 -type f -printf "%f\n"
    

    【讨论】:

      【解决方案4】:

      ls -1Ap /var/ | grep -v /

      与@choroba 的回答类似,但此版本将在每一行列出干净的文件名如果您不想要它们,则不会附加额外的分类指示符。

      -p 标志将 / 附加到目录

      -1 标志对于每行列出一个文件总是很方便

      【讨论】:

        【解决方案5】:

        最简单的方法:它不是 L 它的数字 - 1

        $ ls -1
        

        【讨论】:

        • 这也包括目录
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多