【问题标题】: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”的目录或其他目录上失败。我想可以添加..?*。我没试过。