Sponsored Content
Top Forums Shell Programming and Scripting Using nested for loop to iterate over file names Post 302932508 by Don Cragun on Thursday 22nd of January 2015 04:22:59 AM
Old 01-22-2015
Telling us what OS and shell you're using helps us create a solution that will work in your environment.

With a 1993 or later version of ksh or with a recent bash, here are a couple of ways to do what you seem to want:
Code:
#!/bin/ksh
files=( AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK LLL MMM NNN OOO PPP QQQ)

total=${#files[@]}
echo "Total files in array : $total"

echo 'Using nested for loops...'
fileset=""
for (( i = 0 ; i < total ; i += 5 ))
do	for ((j = 0; j < 5 && (i + j) < total; j++))
	do	fileset="$fileset ${files[i + j]}"
	done
	echo $fileset
	fileset=""
done

echo 'Using array subsets...'
for ((i = 0; i < total; i += 5))
do	fileset="${files[@]:i:5}"
	echo "$fileset"
done

which (with both of those shells) produces the output:
Code:
Total files in array : 17
Using nested for loops...
AAA BBB CCC DDD EEE
FFF GGG HHH III JJJ
KKK LLL MMM NNN OOO
PPP QQQ
Using array subsets...
AAA BBB CCC DDD EEE
FFF GGG HHH III JJJ
KKK LLL MMM NNN OOO
PPP QQQ

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File Names in a Variable in a loop

Hi All , I am having confusion in a shell script. Please guide me. I need to get multiple files (number of files vary time to time, file names are separated by '|') using FTP get from the remote server. Actually, i call the FTP function in a loop. At the last step, i need to move all the get... (3 Replies)
Discussion started by: spkandy
3 Replies

2. Shell Programming and Scripting

Problem with File Names under tcsh loop

Hello, I have a question regarding file naming under a loop in tcsh. I have the following code: #!/bin/tcsh foreach file (test/ProteinDirectory/*) # The * is a bunch of ProteinFile1, ProteinFile2, ProteinFile3, etc. sh /bioinfo/home/dgendoo/THREADER/pGenThreader.sh $file $file ... (4 Replies)
Discussion started by: InfoSeeker
4 Replies

3. Shell Programming and Scripting

big xml file with nested loop parse

I have an xml file with the structure: <tag1> <value1>xyx</value1> <value2>123</value2> </tag1> <tag1> <value1>568</value1> <value2>zzzzz</value2> </tag1> where I want to parse each data pair in the this single file, so something like: find first tag1 data pair... (1 Reply)
Discussion started by: unclecameron
1 Replies

4. Shell Programming and Scripting

How to loop(Iterate) through List with foreach(csh)

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)
Discussion started by: eawedat
2 Replies

5. UNIX for Dummies Questions & Answers

Iterate/Loop Through XML Node List

I need to load an XML file and loop through a list of nodes in it to execute a shell script for each one using the attributes for each node as parameters for the script. Any ideas? Any help will be much appreciated. (1 Reply)
Discussion started by: bradlecat
1 Replies

6. Shell Programming and Scripting

Do loop doesn't iterate

I'm trying to send the file list as parameter to another job and execute it. But the loop doesn't work, the inner job is running only once and not twice as expected for filelist in $(ls -rt *.txt | tail -2) do echo $filelist export filelist cmd="$Program -config $configfile -autoexec... (11 Replies)
Discussion started by: asandy1234
11 Replies

7. Shell Programming and Scripting

Iterate array using loop over ssh

A simple script: #!/bin/bash test=test test1=(test1 test2 test3) echo ${test1 } ssh server 'echo '$test'; echo '${test1 }' ; echo '${test1}' ; for m in $(seq 1 $(echo '${test1 }' | tr " " "\n" | wc -l)); do echo $m ; echo '${test1}'; done'Here is the result: test1 test2 test3 testing... (5 Replies)
Discussion started by: mharald
5 Replies

8. Shell Programming and Scripting

Print file names in a loop

OS : RHEL 6.1 Shell : Bash I have lots of files in /tmp/stage directory as show below. Using a loop, I need to print all the filenames in this directory except those ending with a number. How can I do this ? # pwd /tmp/stage # # # ls -l * -rw-r--r--. 1 root root 0 Oct 7 18:38 stmt1... (2 Replies)
Discussion started by: kraljic
2 Replies

9. Shell Programming and Scripting

While loop a file containing list of file names until the files are found?

Hi, I have a control file which will contain all filenames(300) files. Loop through all the file names in the control files and check the existence of this file in another directory(same server). I need to infinitely(2 hrs) run this while loop until all the files are found. Once a file is found,... (5 Replies)
Discussion started by: laknar
5 Replies

10. Programming

FORTRAN: Loop over variable file names

Hi guys I'm a beginner in fortran. So excuse me for my naivety, let me briefly describe what I was trying to do. I have let's say 2 files named reac-1 and reac-2. After opening these files I've to do some calculations, close these files and open the same files again in a loop. So my faulty code... (6 Replies)
Discussion started by: saleheen
6 Replies
RECEIVE(1)						      General Commands Manual							RECEIVE(1)

NAME
receive - receive files from the sendfile spool SYNOPSIS
receive [ -d ] [ -r ] [ -k ] [ -P ] [ -S ] [ -Z spool ] [ -q ] [ -ffrom ] file [...] receive -n [ -d ] [ -r ] [ -k ] [ -P ] [ -S ] [ -Z spool ] [ -q ] file-number [...] receive [ -s ] [ -l ] [ -L ] [ -R ] [ -ffrom ] receive -b user[@host] [ -k ] [ -f"from" ] file [...] receive -b user[@host] [ -k ] [ -f"from" ] -n file-number [...] receive -b user[@host] [ -k ] -a DESCRIPTION
receive files from the sendfile spool which has been sent to you. If there is already a file with the same name you will be prompted for overwriting or renaming. Allowed wildcards in file names are: * ? [abc] [^abc] CAUTION: you have to put wildcards and other special characters in '' quotes to hide them for interpretation by your shell. OPTIONS
-n receive file number(s) -d delete instead of receive -a receive (or delete or bounce) all files -r rename before receiving -k keep files in spool after receiving -P pipe files to stdout -S receive only pgp-signed files -s list files in short format -l list files -L list files and look inside archives, too -R renumber files in spool -b bounce (forward) files to another recipient -q quiet mode: no questions asked -fuser all actions refer only to files from this user -Z spool specify an alternate spool directory EXAMPLES
receive -L list all files in long format. receive 'blubb*' receive all files starting with string "blubb". receive -daf microsoft.com delete all files from microsoft.com sites. receive -b framstag@bofh '*.jpg' bounce all *.jpg-files to framstag@bofh. FILES
/var/spool/sendfile The sendfile spool directory. /var/spool/sendfile/$USER/log A log of the last transfers. /etc/sendfile.deny Users which are not allowed to receive files or messages (set by root). SEE ALSO
sendfile(1). AUTHOR
Ulli Horlacher - framstag@rus.uni-stuttgart.de 3rd Berkeley Distribution RECEIVE(1)
All times are GMT -4. The time now is 05:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy