printing directories


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting printing directories
# 1  
Old 08-18-2006
printing directories

hi guys i'm trying to make a script that prints out a specified directory as some sort of tree, it prints out ok but i need it to print out every subdirectory within the directory but i'm not sure how to do that, this only goes in one or two levels deep but i need everythign inside that directory.. i'm guessing i'll need some sort of recursive algorithim?

Code:
	dir=$1
	for FILE in $dir/*
	do
		if [ -d "$FILE" ]; then
			echo "|-- `echo $FILE | cut -f2 -d/`"
			for FILE in $dir/$FILE/*
			do
				echo "|    |-- `echo $FILE | cut -f2 -d/`"
			done
		echo "|-- `echo $FILE | cut -f2 -d/`"
		fi
	done

# 2  
Old 08-18-2006
Why reinvent the wheel ?

Ygor has posted a handy one-liner in Tree with UNIX

I have modified it a little and you can find it here
# 3  
Old 08-18-2006
Hi Vino,

Your modified one-liner is missing the "-type d" option in find, so that the directory tree also shows files. This is slightly different to what was required.

Originally from http://www.tek-tips.com/faqs.cfm?fid=3705
# 4  
Old 08-18-2006
Ygor, much appreciated !
Thanks.
# 5  
Old 08-18-2006
Code:
find . -type d -print | sed -e 's;[^/]*/;|--;g;s;--|; |;g'

works wonderfully thanks!

now here's how it appears:

Code:
.
|--lower.sh
|--guess.sh
|--dir
|  |--one-file
|  |--one-file.2
|  |--bla
|  |--bla2
|  |  |--one-file.2
|  |  |--ba;a;a
|  |  |--three-file
|  |  |--Copy of ba;a;a
|  |  |  |--ba;a;a
|--superlower.sh
|--example.sh

how can i make it so that it appears like this:
Code:
.
|--lower.sh
|--guess.sh
|--dir
|  |--one-file
|  |--one-file.2
|  |--bla
|  |--bla2
|      |--one-file.2
|      |--ba;a;a
|      |--three-file
|      |--Copy of ba;a;a
|          |--ba;a;a
|--superlower.sh
|--example.sh

so no lines show up if theres nothing to connect to
# 6  
Old 08-19-2006
I've decided to stick with my own code cos it needs to have loops and functions and the oneliner code (as good as it is) doesnt

I'm not familiar with use of method functions so I wrote this but it won't work, it gives me an error saying
Code:
printDir: command not found

Here's my code
Code:
if [ "$2" != "" -o "$1" == "--help" ]; then
    echo "Usage: ./viztree.sh [directory]"
else
    dir=$1
    printDir $dir
fi

printDir () {
    dir=$1
    for FILE in $dir/*
    do
        if [ -d "$FILE" ]; then
            echo "|-- `echo $FILE | cut -f2 -d/`"
            echo '$dir' = $dir/$FILE
            printDir $dir
        else
            echo "|-- `echo $FILE | cut -f2 -d/`"
        fi
    done
}

I was thinking that to call methods you pass an argument say methodName arg1 or something? am i wrong?
# 7  
Old 08-19-2006
You are invoking a method which is defined later in the script. Move the method definition to before its invocation.

Code:
printDir () {
    dir=$1
    for FILE in $dir/*
    do
        if [ -d "$FILE" ]; then
            echo "|-- `echo $FILE | cut -f2 -d/`"
            echo '$dir' = $dir/$FILE
            printDir $dir
        else
            echo "|-- `echo $FILE | cut -f2 -d/`"
        fi
    done
}

if [ "$2" != "" -o "$1" == "--help" ]; then
    echo "Usage: ./viztree.sh [directory]"
else
    dir=$1
    printDir $dir
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Solaris

Giving read write permission to user for specific directories and sub directories.

I have searched this quite a long time but couldn't find the right method for me to use. I need to assign read write permission to the user for specific directories and it's sub directories and files. I do not want to use ACL. This is for Solaris. Please help. (1 Reply)
Discussion started by: blinkingdan
1 Replies

2. UNIX for Dummies Questions & Answers

List the directories, having given pattern in the directories name, sorted by creation date

It is for HP-Unix B.11.31. Requirement: 1. List the directories, having given pattern in the directories name, sorted by creation date. Example: Directories with name "pkg32*" or "pkg33*" 2. On the output of 1. list the directories by creation date as sort order, with creation date... (2 Replies)
Discussion started by: Siva SQL
2 Replies

3. Shell Programming and Scripting

How to list all the files, directories and sub-directories in the current path except one directory?

Can anyone come up with a unix command that lists all the files, directories and sub-directories in the current directory except a folder called log.? Thank you in advance. (7 Replies)
Discussion started by: Manjunath B
7 Replies

4. UNIX for Dummies Questions & Answers

Using grep command to find the pattern of text in all directories and sub-directories.

Hi all, Using grep command, i want to find the pattern of text in all directories and sub-directories. e.g: if i want to search for a pattern named "parmeter", i used the command grep -i "param" ../* is this correct? (1 Reply)
Discussion started by: vinothrajan55
1 Replies

5. UNIX for Dummies Questions & Answers

Sco Unix printing : jobs hangs in queue - printing via lp versus hpnpf

Hi, We have a Unix 3.2v5.0.5. I installed a printer via scoadmin, HP network printer manager with network peripheral name (hostname and ipadres are in /etc/hosts). This is the configuration file : Code: root@sco1 # cat configurationBanner: on:AlwaysContent types: simpleDevice:... (0 Replies)
Discussion started by: haezeban
0 Replies

6. Windows & DOS: Issues & Discussions

Linux to Windows Printing: PDF starts printing from middle of page.

We are using Red Hat. We have a issue like this: We want to print from Linux, to a printer attached to a Windows machine. What we want to print is a PDF. It prints, but the printing starts from the middle of the page. In the report, there is no space at the top but still printing starts from the... (5 Replies)
Discussion started by: rohan69
5 Replies

7. Shell Programming and Scripting

How to list all the directories, sub directories in a mount along with size in ascending order?

Hi , I am very new to unix as well as shell scripting. I have to write a script for the following requirement. In a particular mount, have to list all the directories and sub directories along with size of the directory and sub directory in ascending order. Please help me in this regard and many... (4 Replies)
Discussion started by: nmakkena
4 Replies

8. Shell Programming and Scripting

Script for parsing directories one level and finding directories older than n days

Hello all, Here's the deal...I have one directory with many subdirs and files. What I want to find out is who is keeping old files and directories...say files and dirs that they didn't use since a number of n days, only one level under the initial dir. Output to a file. A script for... (5 Replies)
Discussion started by: ejianu
5 Replies

9. UNIX for Advanced & Expert Users

Printing Problems in unix ... ( Bar-cdoe - Ip Printing)

Hi guys ... i need ur help with some printing problem in unix ... first prob. : i wanna print from my NCR unix to an Win NT , Ip based printing server ( HP JetDirect ) . My issue , is it possible to print directly to an Ip address from unix ? How do i make it work to get any results ?... (3 Replies)
Discussion started by: QuickSilver
3 Replies
Login or Register to Ask a Question