Mailinglist Archive: opensuse (4398 mails)

< Previous Next >
RE: [SLE] Copying files
  • From: "Albert" <albert@xxxxxxxxxxxx>
  • Date: Thu, 1 Sep 2005 12:10:35 +0200
  • Message-id: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAxevMM82Q/E2sjvhYQ/oJTMKAAAAQAAAAcUdOJ3oR10KchWqc1VckmQEAAAAA@xxxxxxxxxxxx>
On Thursday 1 September 2005 at about 11:53 Darryl Gregorash wrote:
> Albert wrote:
>
> Midnight Commander? Umm, ok.. but then you have to sit there while all
> the work is being done :-) There may also be solutions which are even
> easier than the ones suggested so far.
>
> >files. Each image is 125x125 pixels named according to a numeric value
> >indicating a number on a grid which in turn represents the world. These
> >
> Are they strictly numeric filenames?

Yes they are. Filenames similar to 3634719586.png. They start at 1.png and
go to about 16987207681.png. In the directory we copied it was a subset of
this.

>
> Try something like
>
> for a in {0..9}{0..9}{0..9}; do
> mkdir <target>/$a
> mv $a* <target>/$a/
> done
>
> This will create 1000 separate directories, eg. <target>/005/ etc, and
> move every file beginning with a specific combination of 3 numbers into
> a directory of that name, ie. 005* are all moved into <target>/005/.
> Each mv command will involve about 1000 files.
>
> If you cannot handle moving about 1000 files at a time, then add another
> set of numbers: "for a in {0..9}{0..9}{0..9}{0..9}; ...." which would
> produce 10,000 directories of 100 files each.
>
> If you do not want so many subdirectories in <target>, add another "for"
> layer. For example,
>
> for a in {0..9}{0..9}; do
> mkdir <target>/$a
> for b in {0..9}{0..9}; do
> mv $a$b* <target>/$a
> done
> done
>
> Now you get 100 directories with about 10,000 files in each, and move
> 100 files at a time. If that is too many files per directory, you can do
> all sorts of variants on this theme. This one will move 100 files at a
> time, and give you 100 directories containing 100 subdirectories, each
> containing approximately 100 files:
>
> for a in {0..9}{0..9}; do
> mkdir <target>/$a
> for b in {0..9}{0..9}; do
> mkdir <target>/$a/$b
> for c in {0..9}{0..9}; do
> mv $a$b$c* <target>/$a/$b
> done
> done
> done

One of the above three will probably be the solution at the end of the day.
It seems simple enough.

>
> You may not be able to produce the exact file sorting you want with a
> command structure involving only "for" groups, but at least you will
> certainly be able to move them into a manageable tree structure, and
> then finish the work manually.

I am not too concerned about sorting the files in any specific order. Our
software determines which image file should be used using a bit of maths.
Once this is done, we know exactly which file is to be used. It can be
easily altered to go look in subdirectories for the file.

Thanks for the advice!

Albert

--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.10.18/86 - Release Date: 31/08/2005



< Previous Next >
Follow Ups