![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Protecting the directory tree | rooneyl | UNIX for Dummies Questions & Answers | 2 | 02-17-2008 02:59 PM |
| Searching directory tree | blane | Shell Programming and Scripting | 7 | 05-29-2007 04:30 PM |
| directory as tree | anything2 | High Level Programming | 2 | 03-01-2007 06:38 AM |
| Space Used by Directory Tree | johnk99 | Filesystems, Disks and Memory | 1 | 07-22-2002 09:30 AM |
| Directory tree search??? | solvman | High Level Programming | 3 | 09-28-2001 10:27 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
directory tree
Hi all,
The following is a script for displaying directory tree. D=${1:-`pwd`} (cd $D; pwd) find $D -type d -print | sort | sed -e "s,^$D,,"\ -e "/^$/d"\ -e "s,[^/]*/\([^/]*\)$,\:-----\1,"\ -e "s,[^/]*/,: ,g" | more exit 0 I am trying to understand the above script.But i am not able to understand the following 2 lines -e "s,[^/]*/\([^/]*\)$,\:-----\1,"\ -e "s,[^/]*/,: ,g" | more can any body pls tell me how the above two lines works. cheers RRK |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
these are sed syntex of find and replace...with regular expressions..
in first line- its searching for "/" in the begining of line for any occurance of "/". [ shown by "*"] escaped paranthesis are used to tell how many occurance.. $ used to find @ the end of every line.. \1,\2 etc used to tell where to find... |
|
#3
|
|||
|
|||
|
1 more thing.. [^/] means not to find "/". "^" is used to tell in the start of the line...
and if "^" used inside [] thn it treats as the negation of the exression followed by "^". hope its clear. |
|
#4
|
||||
|
||||
|
I did an awk tree sometime ago, maybe could be usefull for you:
Code:
find . -type d -print 2>/dev/null|awk '!/\.$/ {for (i=1;i<NF;i++){d=length($i);if ( d < 5 && i != 1 )d=5;printf("%"d"s","|")}print "---"$NF}' FS='/'
Last edited by Klashxx; 01-25-2008 at 06:52 AM. Reason: one liner optimization |
||||
| Google The UNIX and Linux Forums |
| Tags |
| regex, regular expressions |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|