【问题标题】:Linux Command: Directory inside a directoryLinux 命令:目录中的目录
【发布时间】:2010-10-20 10:21:45
【问题描述】:

所以我有一个目录 - 比如说 /dir/。 在里面我有这些文件夹- /dir/fold1/ /dir/fold2/ /dir/fold3/

每个文件夹 (fold1,2,3) 都可能包含一个名为 foo 的文件夹。我想列出 dir 中的所有文件夹,其中包含一个名为 foo 的文件夹。

谢谢!

【问题讨论】:

    标签: linux command-line directory


    【解决方案1】:
    ls -ld /dir/*/foo | grep ^d
    

    【讨论】:

      【解决方案2】:

      如果你想在第一级列出所有只包含一个名为foo的子目录的目录,你可以这样做

      for x in /dir/*; do
        [ -d $x/foo ] && ls $x
      done
      

      [ ... ] 构造是 shell 内置 test 的缩写。 -d $x/foo 测试 $x/foo 是否存在并且是一个目录。如果是,则执行ls $x

      【讨论】:

        【解决方案3】:

        怎么样

        ls -R /dir | grep -i foo
        

        分解我们的命令: ls -R = 递归列出文件(包括目录

        grep -i foo = 将采用上面的命令并过滤它不区分大小写以显示任何 'foo' 实例。

        【讨论】:

        • 如何让这个命令不打印我没有访问权限的每个目录?
        • 您应该能够重定向标准错误。像这样的东西: ls -R /dir 2>/dev/null | grep -i foo
        【解决方案4】:

        我建议:

        find /dir -name foo -type d -exec dirname {} \; | xargs ls
        

        但如果任何目录中包含空格,这将不起作用。

        【讨论】:

          【解决方案5】:

          使用这个:

          find dir -type d -name foo
          

          所以...dir 是您要搜索的目录。

          -type 是您要查找的类型:directory、file 或 link。

          -name 是您要查找的名称,区分大小写。如果您希望它不区分大小写,可以使用-iname

          【讨论】:

          • 这列出了所有的 foo 文件夹,而不是它们父母的内容。
          猜你喜欢
          • 2010-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 1970-01-01
          • 1970-01-01
          • 2013-12-14
          相关资源
          最近更新 更多