You might find it very trivial but actually don't know how to loop through all sub-directories and their child directories into a csh. bash was easier I believe but here I am, stuck with csh. So elaborately here's my problem:
Let's say I have my parent directory named C-H/ under which I have C2H3O1/, C2H4O1/...let's say under C2H3O1/ I have several subdirectories like CH2CH2OH/, CH3CH2O/, CH3CHOH/. Inside each sub-directories I have several child directories likeVAS-S0001-001-Ru_001/,VAS-S0001-002-Ru_001/,VAS-S0001-003-Ru_001/. Inside all of them reside OPT-0/, OPT-1/ inside which my job input files and job scripts reside. I wrote a script that I'd like to run inside each child directory that modifies some input files and submits the job. I would like to run my script one time under C-H that'll go through each directory and submit my job.
Here's the silly thing that I have:
Code:
#!/bin/csh
set dir=`*/*/*/*/`
foreach $dir
/scratch/scratchdirs/sol/Scripts/QMcalc/GEN_POSCAR
end
I know I'm doing something very very wrong, I don't have a counter for the foreach but how do I set that since the number of directories might be different for different cases? Thanks a lot!
/scratch/scratchdirs/sol/Scripts/QMcalc/GEN_POSCAR: Command not found.
/scratch/scratchdirs/sol/Scripts/QMcalc/GEN_POSCAR: Command not found.
./abc/OPT-0: No such file or directory.
P.S. I just created some directories named abc, def and some subdirectories like OPT-0,OPT-1 to test it. If I directly go to the directory and run my script it works, so I think the script is fine.
smiling dragon, your code:
#!/bin/csh set dirs=`*/*/*/*/` foreach dir ($dirs) cd $dir /scratch/scratchdirs/sol/Scripts/QMcalc/GEN_POSCAR endShould it be
Code:
cd $dir
or
Code:
cd $dirs
? I tried both but for
Code:
cd $dirs
it says too many arguements. Can you kindly explain why it's
I need to put together a script that will take the contents of two different files (database name and database owner) and put them in two variables within a line:
foreach x (`cat /local/hd3/dba/tools/build_db_scripts/dbs`)
foreach z (`cat /local/hd3/dba/tools/build_db_scripts/dbas`)... (6 Replies)
Just started shell scripting for the first time today :D Can anyone tell me why I get the error "foreach: Words not parenthesized." for my following code? The program takes in a list of arguments.
foreach card ($argv)
echo Hello
end (3 Replies)
Hi everyone I'm new to unix and encountered a small problem i couldnt find out a reason why it doesn't work..please help..
in my csh script when i tried to use the foreach loop like this:
foreach x ( ls )
echo $x
end
when i tried to run it, it printed out 'ls' to the std out instead of... (3 Replies)
Hello all,
I'm working on a foreach loop to compare a couple sets of data. However, each datafile includes a header row. I'm wondering if it is possible to tell the foreach loop to skip the first line of data.
I've been using the basic code as follows:
foreach line ("`file.csv`")
set... (2 Replies)
Hey all,,
I know cshell is harmful:) but I am using this just "to know" - for educational purposes!... not for a long-term use.
lets say i have a list..
set arr=(x y z e f)
I wanna iterate the list with foreach ,, not with while.!!
foreach i $arr
echo $i
end
does not work (2 Replies)
I have a foreach loop in a csh script and I noticed that it tries to find the files with the pattern *$searchpt* in the file name. I'm confused as I never specified checking for the files.
foreach f ( *$searchpt* )
set fnew = `echo $f | awk -v searchpat=$searchpt \
... (1 Reply)
Hi everyone
Does anyone know what is wrong with this script. i keep getting errors
foreach filename (`cat testing1`)
set string=$filename
set depth=`echo "$string"
echo $depth
end
the error is the following
testing: line 1: syntax error near unexpected token `('
testing: line 1:... (3 Replies)
In a foreach loop, is it possible for the loop to go through 2 arguments instead of one
i.e. instead of foreach i (do stuff for i), we have foreach i j(do stuff for i; do stuff for j)
I am working under BASH and TCSH shell environments
cheers (3 Replies)
Hi Guys,
I have a loop which uses a wildcard
i.e. foreach f (*)
but when I execute the tcsh file in unix then it gives me an error
->>>>>>>foreach: words not parenthesized<<<<<<<<<<-
Any help. (1 Reply)