【问题标题】:Find all files in a directory that are not directories themselves查找目录中不是目录本身的所有文件
【发布时间】:2010-11-20 23:59:30
【问题描述】:

我正在寻找一种方法来列出目录中的所有文件,不包括目录本身,以及这些子目录中的文件。

如果我有:

./test.log
./test2.log
./directory
./directory/file2

我想要一个返回的命令:./test.log ./test2.log 没有别的。

【问题讨论】:

    标签: bash unix ksh


    【解决方案1】:

    如果你想要test.logtest2.logfile2,那么:

    find . -type f
    

    如果你不想要file2 那么:

    find . -maxdepth 1 -type f
    

    【讨论】:

      【解决方案2】:

      如果您还需要列出符号链接、管道、设备文件和文件系统的其他特定元素,则应使用:

      find -maxdepth 1 -not -type d
      

      这将列出除目录之外的所有内容。

      【讨论】:

      • 这正是我想要的。我想列出所有类型的 except 目录。我正在做类似find / -group xxx | xargs ls -l 的事情。这将ls -l <dir> 然后ls -l <file> 目录中的每个文件。但是使用-not -type d 从输出中排除了目录。请注意,! -type d 也可以工作(并且根据手册页声称符合 POSIX)
      【解决方案3】:

      使用 find 很简单:

      find . -maxdepth 1 -type f
      

      【讨论】:

        【解决方案4】:
        find . -type f
        

        【讨论】:

        • 你是对的,误读了这个问题。 John Kugelman 发布了更完整的答案。
        【解决方案5】:
        find /some/directory -type f
        

        【讨论】:

          【解决方案6】:
          $ find . -type f -print
          

          每个文件将在自己的行中。您必须在要搜索的目录中。

          【讨论】:

            【解决方案7】:

            更多选择

            ls -ltr | grep ^d
            

            【讨论】: