02-03-2007
Problem with Recursive function
Hi all,
I have to move all the files in a tree directory structure to a single directory. Inorder to know which file is from which directory , i'll have to add the name of the directory to the file name. For this i wrote a recursive function which is as follows
---------------------------------------------
datamover()
{
cd $1
#OLD_DIR=$2
for i in *
do
if [ -d $i ]
then
TMP_DIR=$i
datamover $TMP_DIR
echo $i
else
mv $i ../$1_$i
if [ -f $1/ ]
then
echo some files still exist
else
cd ..
rmdir $1
fi
fi
done
}
----------------------------------------------------------------
When ever I execute the same on a directory structure as
DirA --> DirB --> DirL -->fileN
--> DirM-->fileO
--->DirC --> DirP-->fileR
--> DirQ-->fileS
the program is giving the output as follows
DirA -->DirB -->DirL_fileN
-->DirM_fileO
--->DirC --> DirP-->fileR
--> DirQ-->fileS
and the debug ouptut is as follows
------------------------------------------------------
+ echo Dir Name is DirA
Dir Name is DirA
+ MAIN_DIR=DirA
+ datamover DirA
+ cd DirA
+ '[' -d DirB ']'
+ TMP_DIR=DirB
+ datamover DirB
+ cd DirB
+ '[' -d DirL ']'
+ TMP_DIR=DirL
+ datamover DirL
+ cd DirL
+ '[' -d fileN ']'
+ mv fileN ../DirL_fileN
+ '[' -f DirL/ ']'
+ cd ..
+ rmdir DirL
+ echo fileN
fileN
+ '[' -d DirM ']'
+ TMP_DIR=DirM
+ datamover DirM
+ cd DirM
+ '[' -d fileO ']'
+ mv fileO ../DirM_fileO
+ '[' -f DirM/ ']'
+ cd ..
+ rmdir DirM
+ echo fileO
fileO
+ echo fileO
fileO
+ '[' -d DirC ']'
+ mv DirC ../DirA_DirC
mv: cannot stat `DirC': No such file or directory
+ '[' -f DirA/ ']'
+ cd ..
+ rmdir DirA
rmdir: `DirA': No such file or directory
--------------------------------------------------------------
Can anybody tell me wht's the problem with the code and how to correct it?
the output i require in this scenario will be as
DirA-->DirB_DirL_fileN
-->DirB_DirM_fileO
-->DirC_DirP_fileR
-->DirC_DirQ_fileS
Thanks in Advance
10 More Discussions You Might Find Interesting
1. Programming
Hi everyone, i need your input on this. We can express a function recursivly like this
A(n) = (2 n = 0
5 n = 1
A(n − 1) + A(n − 2) % 47 n > 1
How would i go about constructing a recursive function for this?... (1 Reply)
Discussion started by: bebop1111116
1 Replies
2. Shell Programming and Scripting
Hello everyone , I am looking for a better solution then the one I have created for the my Task
The task is:
Create an automated script that will check for Uploads in a specified Directory and move them to another specified Directory if the files are completely uploaded.
Files are FTP'd to... (2 Replies)
Discussion started by: robertmcol
2 Replies
3. Shell Programming and Scripting
This is shell script I have made to lists out directory contents and filenames for any given directory (without using ls command). There is some problem in dirfunc function call which I have marked 1 is not working. Can anybody suggest what is the problem there and how should I correct it.
... (2 Replies)
Discussion started by: netresearch
2 Replies
4. Shell Programming and Scripting
Can someone tell me, how do i write a recursive code using shell ( eg like 'for' loop in C) which outputs the record to a database table as one row per iteration? (7 Replies)
Discussion started by: goutam_igate
7 Replies
5. Shell Programming and Scripting
Hi Perl Gurus , need URGENT HELP PLEASE !!!!!
I have one recursive Perl function which takes path of any directory as argument and returns array containing all the sub folders inside it recursively.
Now the problem is that it works well if i use it with one time but the problem is that when... (0 Replies)
Discussion started by: anthriksh2000
0 Replies
6. Shell Programming and Scripting
I have the following function in a bash script that fails to return the sorted array. I think the problem lies in the recursion not correctly passing the arrays, but I can't tell what I'm doing wrong. Anyone see the problem?
function quicksort () {
local array=( `echo "$1"` )
local... (7 Replies)
Discussion started by: tkg
7 Replies
7. Shell Programming and Scripting
Hi, I have a file like this
SPF_HC00001|iCalcular_Monto_Minimo|--->|SPF_HC00028|pstcObtener_Monto_Minimo
SPF_HC00004|iCalcular_Incrementos|--->|SPF_HC00032|pstcObtener_Num_Incrementos
SPF_HC00005|iCalcular_Articulo_167_Reformado|--->|SPF_HC00031|pstcObtener_Por_CB_Inc... (2 Replies)
Discussion started by: kcoder24
2 Replies
8. Shell Programming and Scripting
I am facing some problem in perl recurssive function function
my @array_parent = (Some inegers);
my $outputfile = 'output.txt';
my $master_file = 'master.txt';
open (MASTER,"$>>master.txt");
foreach my $child (@array_parent){
my $line = `grep "$child" "$outputfile"`;
... (1 Reply)
Discussion started by: pritish.sas
1 Replies
9. Shell Programming and Scripting
Hi,
I don't know if you can help or if this is even possible, but I am trying to run the following function over an ssh and (depending on the itteration I choose) keep getting unexpected token or undefined symbol errors.
The function is:
killtree()
{
typeset parent=$1
typeset child... (1 Reply)
Discussion started by: RECrerar
1 Replies
10. Programming
Hello forum members,
Please wirte a sample program for print the 1 - 100 and 100 -1 using recursive function.
Thanks & regards
Siva Rangnanath (2 Replies)
Discussion started by: workforsiva
2 Replies
RMDIR(1) User Commands RMDIR(1)
NAME
rmdir - remove empty directories
SYNOPSIS
rmdir [OPTION]... DIRECTORY...
DESCRIPTION
Remove the DIRECTORY(ies), if they are empty.
--ignore-fail-on-non-empty
ignore each failure that is solely because a directory
is non-empty
-p, --parents
remove DIRECTORY and its ancestors; e.g., `rmdir -p a/b/c' is similar to `rmdir a/b/c a/b a'
-v, --verbose
output a diagnostic for every directory processed
--help display this help and exit
--version
output version information and exit
AUTHOR
Written by David MacKenzie.
REPORTING BUGS
Report rmdir bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
COPYRIGHT
Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
rmdir(2)
The full documentation for rmdir is maintained as a Texinfo manual. If the info and rmdir programs are properly installed at your site,
the command
info coreutils 'rmdir invocation'
should give you access to the complete manual.
GNU coreutils 7.1 July 2010 RMDIR(1)