I have the following directory structure, for example:
/test_dir/d /test_dir/d/cron /test_dir/d/cache /test_dir/d/...(more sub dirs) /test_dir/tree /test_dir/tree/a /test_dir/tree/a/a1 /test_dir/tree/a/a2 ...(and so on for b/ and c/ )
I wrote the following bash script that effectively moves to the second level /test_dir , so it will reach /test_dir/d/cron or /test_dir/tree/a , but will not go any further. I canβt understand why the recursive script will not travel further, can someone debug the script and indicate my error?
here is what i wrote:
#!/bin/bash #script to recursively travel a dir of n levels function traverse() { for file in `ls $1` do #current=${1}{$file} if [ ! -d ${1}${file} ] ; then echo " ${1}${file} is a file" else #echo "entering recursion with: ${1}${file}" traverse "${1}/${file}" fi done } function main() { traverse $1 } main $1
here is the result:
/test_dir/a is a file /test_dir/b is a file /test_dir
I know that there are probably more elegant single-line commands for this. But I'm trying to do it in this explicit way. I apologize for the length of this post.
EDIT: using traverse "${1}/${file}"
user800786
source share