![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| problem in awk int() function | qa.bingo | Shell Programming and Scripting | 2 | 01-02-2009 09:52 AM |
| Recursion | joshighanshyam | High Level Programming | 5 | 12-03-2008 12:15 PM |
| Help Help Help in recursion | murtaza | Shell Programming and Scripting | 6 | 03-29-2007 10:26 AM |
| Problem with recursion in subdirectories | scotty_123 | Shell Programming and Scripting | 5 | 03-11-2007 05:51 AM |
| recursion | gsjf | Shell Programming and Scripting | 1 | 08-26-2002 12:22 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Function Recursion Shift Problem
Hi, I'm trying to create a script that will display the contents of the users directories, but i'm confused about how to incorporate the shift properly.
The problem I'm getting with my script is that it goes throught the first couple of directories but then returns an error as it loses the first directory when continuing the search to other directories (I hope that makes sense?!) EDIT: I apologise, that was the old problem, now the problem is the path to be searched adds the wrong directories so it looks in paths that do not exist Here's my code, any help would be greatly appreciated. Code:
direc=~
list=$(ls -l $direc | egrep '^d' | cut -d" " -f8)
function printList() {
for line in $*
do
echo $line
list=$(ls -l $direc/$1 | egrep '^d' | cut -d" " -f8)
direc=$direc/$1
shift
printList $list
done
}
printList $list
Code:
list=$(ls -l $direc/$1 | egrep '^d' | cut -d" " -f8 2>/dev/null) Code:
list=$(ls -l $direc/$1 | egrep '^d' | cut -d" " -f8) 2>/dev/null ![]() Last edited by nuvpal; 03-12-2009 at 06:22 AM.. |
|
||||
|
Quote:
Basically what I want my script to do is display a visual representation of the specified directory and all its sub directories (like the tree command). I have managed to supress the original ls error by adding the 2>/dev/null to the function call itself which seems to work ok now: Code:
#!/bin/bash
direc=~
seperator=....
list=$(ls -l $direc | egrep '^d' | cut -d" " -f8)
function printList() {
for line in $*
do
echo $line
list=$(ls -l $direc/$1 | egrep '^d' | cut -d" " -f8 )
direc=$direc/$1
shift
printList $list 2>/dev/null
done
}
printList $list 2>/dev/null
the output given will be something like: (where the . and number represent the directories and subdirectories) direc1 direc1.1 direc1.1.1 direc1.1.2 direc1.2 direc1.2.1 direc2 and then it halts, where as i want it to display an output like: direc1 direc1.1 direc1.1.1 direc1.1.2 direc1.2 direc1.2.1 direc2 direc2.1 direc2.1.1 direc2.2 direc2.2.1 direc3 direc3.1 direc3.1.1 direc3.2 direc4 ...etc Last edited by nuvpal; 03-12-2009 at 08:26 AM.. |
|
||||
|
Quote:
Code:
tree ~ I hope that is clearer. And I greatly appreciate your help and time. ![]() |
|
||||
|
Quote:
direc1 would be the parent directory, direc1.1 and direc 1.2 would be sub directories of direc1, and direc1.1.1 would be a sub directory of the subdirectory direc1.1 i hope thats a bit clearer ![]() |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|