我试图遍历当前目录下的子目录。我想在每个子目录中访问和处理某些文件。谁能帮助我访问子目录中的文件?
"
for dir in /home/ayushi/perfios/fraud_stmt/*;
do echo $dir;
done;
"
上面的脚本将回显所有子目录。但是我不想回显,而是想进入目录并访问其中的文件。
答案 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"/.*
以匹配隐藏目录,但在这种情况下,必须过滤特殊的硬链接目录.
和..
以避免无限循环。