嵌套目录中的Shell脚本

时间:2013-07-19 17:42:30

标签: linux shell scripting

我遇到的问题是我尝试在目录中的所有文件夹上运行命令。

例如: PWD是/ home / user / Documents 我希望我的程序/脚本能够完成

/home/user/Documents
/home/user/Documents/directory1
/home/user/Documents/directory1/foo
/home/user/Documents/directory2
/home/user/Documents/directory2/bar
运行命令的

etcetera:

tranalyzer -r <file in folder> -w OUT_<name of folder>

我也希望删除所有没有扩展名.dmp

的文件

如果有人可以指导我或他们会提供帮助的教程,我将非常感激。

2 个答案:

答案 0 :(得分:2)

# iterate over a NUL-delimited stream of directory names
while IFS='' read -r -d '' dirname; do
  # ...then list files in each directory:
  for file in "$dirname"/*; do
    # ignore directory contents that are not files
    [[ -f $file ]] || continue
    # delete files which do not have the .dmp extension
    if [[ $file != *.dmp ]]; then
      rm -f "$file"
      continue
    fi
    # run analysis tool
    tranalyzer -r "$file" -w "OUT_${dirname##*/}"
  done
done < <(find . -type d -print0)

答案 1 :(得分:1)

要使此命令起作用,您必须位于包含您要递归的目录的顶级目录中。

set -f
OIFS="$IFS"
IFS=$'\n' 
for file in `find . -type f`;
do
     tranalyzer -r "$file" -w OUT_<name of folder>
done
IFS="$OIFS"
set +f