12-01-2008
ksh - walking back up a directory PATH
Hi there,
I am putting a script together to apply a label to a directory structure but it can't be done down the directory structure, i must start at the end and work back and this is what i am struggling with.
for example, i will supply a path as an argument to a script, e.g
dir1/dir2/dir3/dir4/dir5/dir6
i then want to loop round but each time remove the end element of the path e.g
1st pass = dir1/dir2/dir3/dir4/dir5/dir6
2nd pass = dir1/dir2/dir3/dir4/dir5
3rd pass = dir1/dir2/dir3/dir4
4th pass = dir1/dir2/dir3
5th pass = dir1/dir2
6th pass = dir1
The path will not always be 6 entries long though, it could be anywhere in between 2 and 10 entries long.
Has anybody done this before, or give me pointers on which utility within ksh i can use, e.g awk, nawk etc.
many thanks in advance
Steve
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
hiyas
I am trying to get back to the root directory: I went into MAIL directory and now I can't get back to the root directory. What are the commands...
I have '?' coming up and I cannot proceed with this, HELP
Cheers (1 Reply)
Discussion started by: etravels
1 Replies
2. UNIX for Dummies Questions & Answers
Say, I want to move into dir library from current dir, on prompt if I type in
cd li
if it is followed by pressing 'Tab' key then complete dir name appears.
Would there anyone know, how we can make into effect this path autocompletion?
I am using 'ksh'. (5 Replies)
Discussion started by: videsh77
5 Replies
3. Linux
Hey all,
Is there any way out to get/restore the deleted file in Linux ? As we do have Recycle Bin in Windows OS.
as i deleted some files.. it is available in .snapshot
but its a large files.. i cont use "mv" command to copy back.
it there any way .. such like
in window we click restore... (1 Reply)
Discussion started by: mail2sant
1 Replies
4. Shell Programming and Scripting
Hi,
I am trying to figure out if there is a way to make linux take me back to the previous directory I was working in. For instance, I am in
/home/username/directory1
Then if I cd into /home/username/directory1/temp1/temp2/temp3
I would like to immediately go back to the previous... (2 Replies)
Discussion started by: Legend986
2 Replies
5. Shell Programming and Scripting
Hi,
I have a file abcd.txt which has contents in the form of full path file names i.e.
$home> vi abcd.txt
/a/b/c/r1.txt
/q/w/e/r2.txt
/z/x/c/r3.txt
Now I want to retrieve only the directory path name for each row
i.e
/a/b/c/
/q/w/e/
How to get the same through shell script?... (7 Replies)
Discussion started by: royzlife
7 Replies
6. UNIX for Dummies Questions & Answers
Some time ago I was using a linux system and someone had set up and
alias called "back" that got me back to the directory I was last in, which
was very useful. I've now switched to using a mac, and don't have those aliases available. Can anyone tell me how I could make a an alias that
would... (2 Replies)
Discussion started by: ac2011
2 Replies
7. UNIX for Dummies Questions & Answers
~/assign1b/assign1/york/>
your current directory is york
how do you go back to your home directory with using relative pathname?
not using cd alone?
:( (3 Replies)
Discussion started by: blackendstars
3 Replies
8. UNIX for Dummies Questions & Answers
My input is as below :
/splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt
/splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt
/splunk/scrubbed/loyal/IFIND.HELLO.WROC.txt
/splunk/scrubbed/triumph/ifind.triumph.txt
From the above input I want to extract the file names only .
Basically I want to... (5 Replies)
Discussion started by: IshuGupta
5 Replies
9. UNIX for Beginners Questions & Answers
Hello,
I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
Discussion started by: Sekhar419
4 Replies
10. UNIX for Beginners Questions & Answers
What is the difference ../directory path and ./directory path in ksh? (1 Reply)
Discussion started by: TestKing
1 Replies
scandir(3) Library Functions Manual scandir(3)
NAME
scandir, alphasort - Scans or sorts directory contents
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
#include <sys/types.h> #include <sys/dir.h>
int scandir ( char *dir_name, struct dirent * (*name_list[ ]), int (*select) ( struct dirent *dir ), int (*compare) (
struct dirent **dir1, struct dirent **dir2 ) );
int alphasort ( struct dirent **dir1, struct dirent **dir2 );
PARAMETERS
Points to the directory name. Points to the array of pointers to directory entries. Points to a user-supplied function that is called by
the scandir() function to select which entries to include in the array. Points to a user-supplied function that sorts the completed
array. Points to a dirent structure. Points to a dirent structure.
DESCRIPTION
The scandir() function reads the directory pointed to by the dir_name parameter. It then uses the malloc() function to create an array of
pointers to directory entries. The scandir() function returns the number of entries in the array and, through the name_list parameter, a
pointer to the array.
The select parameter points to a user-supplied function that the scandir() function calls to select which entries to include in the array.
The selection routine is passed a pointer to a directory entry and returns a nonzero value for a directory entry that is included in the
array. If the select parameter is a null value, all directory entries are included.
The compare parameter points to a user-supplied function that is passed to the qsort() function to sort the completed array. If the compare
parameter is a null value, the array is not sorted.
The memory allocated to the array can be deallocated by freeing each pointer in the array, and the array itself, with the free() function.
The alphasort() function alphabetically compares the two dirent structures pointed to by the dir1 and dir2 parameters. This function can be
passed as the compare parameter to either the scandir() function or the qsort() function. A user-supplied subroutine may also be used.
RETURN VALUES
The scandir() function returns -1 if the directory cannot be opened for reading or if the malloc() function cannot allocate enough memory
to hold all the data structures. If successful, the scandir() function returns the number of entries found.
The alphasort() function returns the following values: Less than 0 (zero): The dirent structure pointed to by the dir1 parameter is lexi-
cally less than the dirent structure pointed to by the dir2 parameter. 0 (zero): The dirent structures pointed to by the dir1 parameter
and the dir2 parameter are equal. Greater than 0 (zero): The dirent structure pointed to by the dir1 parameter is lexically greater than
the dirent structure pointed to by the dir2 parameter.
RELATED INFORMATION
Functions: malloc(3), opendir(3), qsort(3) delim off
scandir(3)