Shell脚本-使用Shell脚本遍历子目录

时间:2018-09-18 07:58:51

标签: bash shell

我试图遍历当前目录下的子目录。我想在每个子目录中访问和处理某些文件。谁能帮助我访问子目录中的文件?

"
for dir in /home/ayushi/perfios/fraud_stmt/*; 
do echo $dir;


done;
"

上面的脚本将回显所有子目录。但是我不想回显,而是想进入目录并访问其中的文件。

2 个答案:

答案 0 :(得分:1)

find /home/ayushi/perfios/fraud_stmt/ -type f | while read fname; do
    : do something on $fname here
done

这将从指定目录向下搜索所有文件(即非实际目录)。请注意,如果“ $ fname”包含空格或其他“奇数”字符,则应将其用双引号引起来。

答案 1 :(得分:1)

使用递归函数的示例

process_file() {
    echo "$1"
}

rec_traverse() {
    local file_or_dir
    for file_or_dir in "$1"/*; do
        [[ -d $file_or_dir ]] && rec_traverse "$file_or_dir"
        [[ -f $file_or_dir ]] && process_file "$file_or_dir"
    done
}

rec_traverse /home/ayushi/perfios/fraud_stmt
  • process_file可以更改为在文件上执行某些操作。
  • "$1"/*可能会更改为"$1"/* "$1"/.*以匹配隐藏目录,但在这种情况下,必须过滤特殊的硬链接目录...以避免无限循环。