我想编写一个shell脚本,它遍历目录下的所有目录,并在每次迭代时调用一个目录名作为参数的java程序。
因此我的父目录作为shell脚本的参数提供:例如:
. myShell.sh /myFolder/myDirectory
/myFolder/myDirectory
下有100个目录。对于每个“directory_i”,我想运行:
java myProg directory_i
如果有人能为我提供一个完美的工作shell脚本!
答案 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