【问题标题】:Loop through directories and execute a command on Linux遍历目录并在 Linux 上执行命令
【发布时间】:2018-01-04 07:19:53
【问题描述】:

例如:{pwd} /home/vrm/ 假设这个目录里面有 100 个目录。像dir2、dir2、dir3等等..

我想去这些目录中的每一个并执行一个命令(比如 psh make clean)。

我该怎么做?请指教。

【问题讨论】:

  • 也许使用find?大多数 shell 都有for 循环,可以遍历目录,请阅读 shell 的手册页了解更多详细信息。

标签: linux loops unix directory


【解决方案1】:

我一般使用以下遍历目录

find . -type d -print0 | while read  -d $'\0' dname; do echo "DIR: ${dname}"; done

请务必将变量 dname 用双引号括起来,因为它可能有空格。

【讨论】:

    【解决方案2】:

    在 sh 中,您可以使用 for 循环。注意.[^.]* 来捕获(大多数)“点”目录。

    for i in .[^.]*/. */. ; do
     (cd "$i"; pwd)
    done
    

    它会在名为“..foo”的目录或其他目录上失败。我想可以添加..?*。我没试过。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2011-01-07
      相关资源
      最近更新 更多