Visit Our UNIX and Linux User Community


Listing directories and sub directories


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Listing directories and sub directories
# 1  
Old 08-03-2009
Listing directories and sub directories

Hi,
I am trying to get the following output:
-(0)
/home/<user-name>-(1)
..........a-(2)
....................codetest-(3)
..............................oracle-(4)
..............................unix-(5)
........................................dir1-(6)
....................meum-(7)
....................oracle-(8)
..............................plcourse-(9)
..............................sqlcourse-(10)
........................................exercises-(11)
..................................................chapter10-(12)
..................................................chapter11-(13)
..................................................chapter12-(14)

The example above shows that directly under the home directory, there is a single directory ‘a’ which contains ‘codetest’, ‘meum’ and ‘oracle’. Under ‘codetest’ there is ‘oracle’ and ‘unix’.
and I am using the following code:
Code:
#!/bin/bash

function subDirect ()
{
        s=$1
        found=($(ls $s))
        arraySiz=${#found[@]}
        a=0
        count=0
        while [ $a -lt $arraySiz ]
        do
                if [ $arraySiz -eq 1 ]
                then
                        echo $s
                else
                        echo $s
                        cd $s
                        subDirect ${found[a]}

                        cd ..
                fi
        let a=a+1
        done
}

i=0
BOpen="-("
BClose=")"
user=$(whoami)
echo $BOpen $i $BClose
let i=i+1
echo "/home/"$user $BOpen $i $BClose
let i=i+1
dir=$(ls ~)
subDir=($dir)
arraySize=${#subDir[@]}
x=0
while [ $x -lt $arraySize ]
do
 subDirect "${subDir[x]}"
let x=x+1
done

################
When the recursion takes place in function subDir, it doesn't restore the previous values after coming out.e.g
if it has found and displayed the dir1-(6) from the desired output, it will not regain the values of unix(5) or codetest(3)..
Can anybody help please.
Regards,
Qasim

Last edited by qasim; 08-04-2009 at 07:23 AM.. Reason: indent
# 2  
Old 08-03-2009
welll...I'll let someone else look over your code, but you could do:

Code:
 find . -type d -print | sed -e 's;[^/]*/;..........;g'|awk '{print $0"-("NR-1")"}'

to get the output you're after i believe...

HTH
# 3  
Old 08-03-2009
That's lovely.Thank you very much.
I 'll really appreciate if somebody would let me know what's wrong with my code (so i could improve my scripting skills)
Regards,
Qasim
# 4  
Old 08-03-2009
Please edit your post and insert CODE-tags to enhance readability and to preserve formatting like indention etc., ty.
# 5  
Old 08-04-2009
Quote:
Originally Posted by qasim
That's lovely.Thank you very much.
I 'll really appreciate if somebody would let me know what's wrong with my code (so i could improve my scripting skills)
Regards,
Qasim
Try declaring the variables used by the function to be local
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #186
Difficulty: Easy
The primary role of a Moderator at UNIX.com is to enforce the community rules and guidelines.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

listing directories with more than x files

How can I find and print the directories on a server that have more than 5,000 files? There's some spam emails and I'm trying to find all directories that have a lot of spam The file count should just be the files directly under that directory, not like the total from all nested directories ... (1 Reply)
Discussion started by: vanessafan99
1 Replies

2. Shell Programming and Scripting

listing directories and sub directories with time and name options

Hello all! I'm looking to list directories and sub-directories of a path, on this forum I found this command: find $path -type d -exec ls -ld {} \; The issue I have is that with a simple ls, the list is listed by name, and using -t I get it by time. How could I list directories and sub... (5 Replies)
Discussion started by: nomadvisuals
5 Replies

3. Shell Programming and Scripting

Listing non empty directories

Hi Gurus, How to list directories that are non-empty and non-hidden Thanks in advance (2 Replies)
Discussion started by: kinny
2 Replies

4. Shell Programming and Scripting

listing directories alone

ls lists all files and sub directories in the current directory but how to list only the sub directories and not the files? (2 Replies)
Discussion started by: bbala
2 Replies

5. UNIX for Dummies Questions & Answers

listing of directories with / at end...without ls -F

Hi When im listing (ls -al ) its listing directories without / at the end of directories dir1 dir2 dir3 and i need to list directories with dir1/ dir2/ dir3/ and this should not be made by command ls -F / should be embedded at the last since one of the scripts reads... (10 Replies)
Discussion started by: vasanthan
10 Replies

6. UNIX for Advanced & Expert Users

listing of directories with / ...not to use ls -F

Hi When im listing (ls -al ) its listing directories without / at the end of directories dir1 dir2 dir3 and i need to list directories with dir1/ dir2/ dir3/ and this should not be made by command ls -F / should be embedded at the last since one of the scripts reads directories... (1 Reply)
Discussion started by: vasanthan
1 Replies

7. UNIX for Advanced & Expert Users

Listing directories and sub directories

Hey there, i am trying to list all the directories and sub directories of a file system, but am having a bit of trouble. ls -lR|grep \/|grep '^\.' >> input.dat i used this statement to list all the directories and sub directories and output them to a file when i try to print them out on... (3 Replies)
Discussion started by: jinxor
3 Replies

8. UNIX for Dummies Questions & Answers

Listing Unique directories.

Hi, Simple question. If i could find a file been listed in many dirctories, how to get the unique list of directories. find / -name "abc*" --> will give me list of directories. /home/abc.txt /home/ddd/abcd.txt /home/ddd/abcde/txt So how to get /home /home/ddd Thanks in... (2 Replies)
Discussion started by: deepakwins
2 Replies

9. UNIX for Dummies Questions & Answers

Listing directories and ${1:+$1/}*

Hi I have 2 questions: Q1 - What does ${1:+$1/}* mean? I guess it lists all files in current directory - Could any one explain how this expression works? Q2 - I am trying to list directories only in current path - I know that ls could be used but I thought I'd give find a try. I need to... (5 Replies)
Discussion started by: GMMike
5 Replies

10. UNIX for Dummies Questions & Answers

files and directories listing

Hello: I need to list some files into some directories ordered by size. i need help! BEst regards Alberto (1 Reply)
Discussion started by: bbolson
1 Replies

Featured Tech Videos