Can anyone come up with an easy solution for the following? I can invent all sorts of multi-line ways of doing it but I can't think of a simple one-liner. I have (lots of) directories with files with names like the following in them:- 1130938547.25791_1.server:2,RS 1130938547.25791_3.server:2,RS 1130938547.25791_5.server:2,RS 1130940325.30327_1.server:2,RS 1130940325.30327_3.server:2,RS 1130940325.30327_5.server:2,RS 1130945401.24201_1.halkidiki:2,RS 1130945401.24201_3.halkidiki:2,RS 1130945401.24201_5.halkidiki:2,RS I want to run a shell script for loop on the files in these directories, it's easy enough to use find to recursively run through all the directories, the issue occurs when I do:- for i in * do # lots of clever (?) things done The 'for i in *' means that the files are processed in the order shown above with the 'server' files before the 'halkidiki' ones. I want to *guarantee* that the 'halkidiki' ones come first, can anyone come up with a way of doing this? for i in *halkidiki* *server* Doesn't work because not all the directories have both server and halkidiki files. -- Chris Green (chris@areti.co.uk) "Never ascribe to malice that which can be explained by incompetence."
Chris Green <chris@areti.co.uk> writes:
The 'for i in *' means that the files are processed in the order shown above with the 'server' files before the 'halkidiki' ones. I want to *guarantee* that the 'halkidiki' ones come first, can anyone come up with a way of doing this?
for i in *halkidiki* *server*
Doesn't work because not all the directories have both server and halkidiki files.
for i in *halkidiki* *server*; do if [ -e "$i" ]; then # clever things fi done -- http://www.greenend.org.uk/rjk/
On Thu, Nov 03, 2005 at 10:59:56AM +0000, Richard Kettlewell wrote:
Chris Green <chris@areti.co.uk> writes:
The 'for i in *' means that the files are processed in the order shown above with the 'server' files before the 'halkidiki' ones. I want to *guarantee* that the 'halkidiki' ones come first, can anyone come up with a way of doing this?
for i in *halkidiki* *server*
Doesn't work because not all the directories have both server and halkidiki files.
for i in *halkidiki* *server*; do if [ -e "$i" ]; then # clever things fi done
Ah, yes, how simple, thanks! -- Chris Green (chris@areti.co.uk) "Never ascribe to malice that which can be explained by incompetence."
participants (2)
-
Chris Green -
Richard Kettlewell