I'm fairly new to scripting so please bear with me. I will try to explain as best as I can but if there's anything that is not clear, please let me know.
I have a directory (see below) with numerous folders and within each of those folders are various files. I would like to run a script that will go into each folder and then select the specified files and then repeat this process for all the folders that are in a given directory. Here is an example of how the path is set up:
The folders contain multiple files with various extensions. I would like the script to go into random#1 folder, look for the specified files, execute the command, and then move onto random#2 folder and do the same.
Inside each folder are the following files:
I have the following script that only works on one specific type of file inside each folder but I need to write a new one that works on specified files (above) located inside each folder in the directory.
How can I make it so that I can replace the above to make a list of all the folders and then run a script that goes inside each folder and looks for the specified files?
Basically, I need the script to go into the directory, into the subdirectory, into the folders, and look for specified files in those folders. And repeat for every folder there is.
I have exhausted all options of self-teaching/experimenting to figure this out on my own and therefore, I'm hoping I can find some solution here.
Let us start with a description of your environment:
- which OS are you using (and which version of it)
- which shell are you using (and, maybe, which version of it)
the answers to these questions may well influence the final solution to your problem.
Now, the general solution to your problem is the find-command: basically it produces a list of files, which (see the -exec-clause) then can be subjected to some command. For a (short) introduction see here
Let us start with a description of your environment:
- which OS are you using (and which version of it)
- which shell are you using (and, maybe, which version of it)
the answers to these questions may well influence the final solution to your problem.
Now, the general solution to your problem is the find-command: basically it produces a list of files, which (see the -exec-clause) then can be subjected to some command. For a (short) introduction see here
I hope this helps.
I am using Ubuntu 12.04 and the shell is the default one that comes with it.
So I have a directory with about 100 folders inside and each of those folders has the following 4 files inside it. I want the script to go into the first folder, look for the files, run the analysis on those files, and then go through the 2nd folder and the 3rd and so on.
I am trying to input those files into this code to automate the analysis instead of having to manually input files using the gui for the program I am using.
Can I just put the script inside the directory with the folder and the text file (with list of folders) and run it from there?
I am using Ubuntu 12.04 and the shell is the default one that comes with it.
OK. If i am not mistaken Ubuntu uses dash as the default shell, which is (more or less, to be honest i don't know exactly) the same as bash. Perhaps there are some differences, but they are minor.
Quote:
Originally Posted by azurite
So I have a directory with about 100 folders inside and each of those folders has the following 4 files inside it. I want the script to go into the first folder, look for the files, run the analysis on those files, and then go through the 2nd folder and the 3rd and so on.
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.
Quote:
Originally Posted by azurite
Can I just put the script inside the directory with the folder and the text file (with list of folders) and run it from there?
No, it doesn't matter at all where the script resides. It is a good habit to put all your (personal) scripts into one directory - the common name being "bin" and located in your home directory. If there is no such directory i suggest you create it and then modify the file .profile in you home directory to include this line:
Now you can put all your scripts into this directory and call them without having to explicitly type the path. (You need to log off and log on again for this to take effect).
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".
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)