Shell脚本帮助!循环目录下的目录

时间:2009-11-27 18:25:38

标签: shell

我想编写一个shell脚本,它遍历目录下的所有目录,并在每次迭代时调用一个目录名作为参数的java程序。

因此我的父目录作为shell脚本的参数提供:例如:

. myShell.sh  /myFolder/myDirectory

/myFolder/myDirectory下有100个目录。对于每个“directory_i”,我想运行:

java myProg directory_i

如果有人能为我提供一个完美的工作shell脚本!

3 个答案:

答案 0 :(得分:9)

您可以使用find

myShell.sh脚本可能看起来有点像这样,这个版本会以递归方式处理目标下的任何所有子目录

DIR="$1"
find "$DIR" -type d -exec java myProg {} \;

可用的find选项的确切集合取决于您的各种unix。如果你不想要递归,你可以使用-maxdepth作为Neeraj注意到的,或者-prune,它开始变得有点难看:

find "$DIR" \( ! -name . -prune \) -type d  -exec java myProg {} \;

编辑添加了修剪示例。

答案 1 :(得分:2)

#!/bin/bash -f
files=`ls $1`
for file in $files; do
        if [ -d $file ];then
          java myProg $file
          # java your_program_name directory_i
        fi
done

答案 2 :(得分:1)

#!/bin/sh
for i in */.; do
  echo "$i" aka "${i%/.}"
  : your_command
done