How to loop command over folders in a directory?

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to loop command over folders in a directory?
# 8  
Old 05-31-2016
Quote:
Originally Posted by bakunin

I understood that already. Now, such a task breaks down to two parts: first, write a script which takes a certain directory name and then executes the task you described below for that one directory (respectively the files in this directory). The second part is to create a list of these directories and then call the script with each of these directory names as arguments.

You probably have overseen my mentioning of the find-command. It has everything you need to do this second part (creating a list of directory names) and i suggest you follow the link i gave you and find out how it works. Once you get that covered we will find out how to write a script which does what you want for one directory supplied on the commandline.

bakunin
Perhaps there is some misunderstanding on my part. I'm including screenshots to make sure I did not describe something incorrectly. I went ahead and made a list of all the folders in the directory. Please see below if I have done it correctly.

Last edited by azurite; 06-15-2016 at 01:47 AM..
# 9  
Old 06-08-2016
[QUOTE=MadeInGermany;302974553]Instead of cd `echo $CASE` you simply do cd "$CASE".
Instead of "cd" you can use "pushd" and return to the previous directory with "popd".
Code:
foreach ...
  pushd "$CASE"
  dtifit ...
  popd
end

You are using csh; instead I recommend to go to bash or ksh. Then, instead of the pushd/popd you can use a ( sub shell ) where the "cd" happens only in the sub shell and the current directory in the main shell is unchanged

Hmm, pardon my lack of knowledge, but does echo and $ in CASE do the same thing?

Last edited by azurite; 06-15-2016 at 01:47 AM..
# 10  
Old 06-08-2016
Hi,

Try the below code:

Code:
for a in `find . -type d`
do
cd $a
yourlogic
cd <lcoation of the script where it is> 
done

This will into all the directories and their sub-directories and apply your logic but you need to come base directory in the script hence i have used cd before the done command.


Code:
for a in `find . -type d`
do
for b in filename1 filename2 --> if known else you could use below statement
for b in `ls -l $a| grep ^-| awk '{print $0}'` --> this will check all files in the of variable a.
your logic with $a/$b --> Your file to apply logic
done
done

Moderator's Comments:
Mod Comment Please use code tags as required by forum rules! Even for pseudo code.

Last edited by RudiC; 06-08-2016 at 01:31 PM.. Reason: Added code tags.
# 11  
Old 06-08-2016
Quote:
Originally Posted by azurite
Hmm, pardon my lack of knowledge, but does echo and $ in CASE do the same thing?
I am not sure if I understand your question.
Here are some explanations:
$CASE gives the value of the variable CASE.
echo $CASE prints the value of the variable. The value is evaluated before (for example, a * character is a wildcard and eventually replaced by matching files in the current directory). Often you don't want that, then put it in quotes: echo "$CASE".
Instead of printing it with the echo command, you can cd to it with the cd command.
Now, the cd `echo "$CASE"` is complicated: it first does an echo "$CASE", but because it is in backticks it does not print to the screen but is passed to the cd command.
# 12  
Old 06-11-2016
Quote:
Originally Posted by bhupeshchavan
Hi,

Try the below code:

Code:
for a in `find . -type d`
do
cd $a
yourlogic
cd <lcoation of the script where it is> 
done

This will into all the directories and their sub-directories and apply your logic but you need to come base directory in the script hence i have used cd before the done command.


Code:
for a in `find . -type d`
do
for b in filename1 filename2 --> if known else you could use below statement
for b in `ls -l $a| grep ^-| awk '{print $0}'` --> this will check all files in the of variable a.
your logic with $a/$b --> Your file to apply logic
done
done

Moderator's Comments:
Mod Comment Please use code tags as required by forum rules! Even for pseudo code.
I'm sorry to sound so novice but could you explain how I would modify the code to use the filenames that I have in the first post of this thread? Also, I'm confused as to what to put in the 'your logic' part, if you could please explain it further, it would be very helpful.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Trying to loop through folders and execute an existing python script.

I am trying to loop through lots and lots of folders and use the names of the folders to run a Python script which has parameters. E.g. -- setup_refs -n John -f England/London/Hackney/John -c con/con.cnf Normally to run `setup_refs` once from command line it's: `python setup_refs.py -n John... (3 Replies)
Discussion started by: Mr_Keystrokes
3 Replies

2. UNIX for Beginners Questions & Answers

Loop through the folders and search for particular string in files

Hello, Opearting System Environment : HP Unix B.11.31 U I look for script to On specific folders list On specific filelist Search for given string For Example : r48_buildlib.txt contains wpr480.0_20161027 wpr480.0_20161114 wpr481.0_20161208 wpr482.0_20161222... (4 Replies)
Discussion started by: Siva SQL
4 Replies

3. Shell Programming and Scripting

Bash directory loop, but only choose those folders with specific word in it

Hello, how in bash i can get directory loop, but only choose those folders with specific word in it, so it will only echo those with specific word #!/bin/bash for filename in /home/test/* do if ; then echo $filename; fithx! (4 Replies)
Discussion started by: ZerO13
4 Replies

4. Shell Programming and Scripting

Copy the files in directory and sub folders as it is to another directory.

How to copy files from one directory to another directory with the subfolders copied. If i have folder1/sub1/sub2/* it needs to copy files to folder2/sub1/sub2/*. I do not want to create sub folders in folder2. Can copy command create them automatically? I tried cp -a and cp -R but did... (4 Replies)
Discussion started by: santosh2626
4 Replies

5. UNIX for Dummies Questions & Answers

Counting number of folders in a Directory

Help Needed ! Can we count number of folders of specific date in a directory, even if directory has folders of different dates. Please reply as soon as possible. (1 Reply)
Discussion started by: vishal_215
1 Replies

6. Shell Programming and Scripting

Loop folders, delete files, copy new ones

Folks, I am hopeful that you may be able to help me out with writing a script that can be run nightly (as cron?) to loop through all subfolders within the "/media" directory, delete all of the files in each of them, and then copy in all of the files from the "/home//sansa" directory to each of... (6 Replies)
Discussion started by: acraig
6 Replies

7. Shell Programming and Scripting

Loop through folders and open them

Well the title says it all. I need a loop script that directs to a folder and opens a bash file. I just found out about loop files the other day and yeah, dont know if that can be done. (6 Replies)
Discussion started by: snoopy817
6 Replies

8. Shell Programming and Scripting

Help modifying script to loop through all folders

I have this script someone very kindly help me write last year which loops through all files in a folder and does a command. I need to modify it to loop through all sub-folders of a main folder and only perform the command on files modified after Jan 1st 2008. And I need the command to place the... (3 Replies)
Discussion started by: Fred Goldman
3 Replies

9. Shell Programming and Scripting

Prepend name of directory to children folders

Hi, I am a shell scripting newbie. I am in need of a shell script that will prepend the name of the parent directory to the child directory. For example if the shell script called rename.sh is invoked with ">rename.sh /home/foobar/Simple" and the structure of the folder Simple is : Simple... (7 Replies)
Discussion started by: kalichar
7 Replies

10. Shell Programming and Scripting

script to loop around folders

I have a folder called {homedata} Within this folder there are 12 subfolders 200601.......200612 Within each subfolder there are 8 sets of files Each filename commences with A B C D E F G or H, so {filename}* can be used. I am trying to write a script which will from the top level go... (2 Replies)
Discussion started by: grinder182533
2 Replies
Login or Register to Ask a Question