Mailinglist Archive: opensuse (4398 mails)
| < Previous | Next > |
Re: [SLE] Copying files
- From: Darryl Gregorash <raven@xxxxxxxxxxxxx>
- Date: Thu, 01 Sep 2005 04:16:09 -0600
- Message-id: <4316D4E9.1070103@xxxxxxxxxxxxx>
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.
>We can access a file if we know what the file name is. It is therefore
>possible to manipulate (rm/cp/ls) any single file and possibly a number of
>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
>images contain some demographic information compiled from various sources
>within our company.
>
Are they strictly numeric filenames?
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
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.
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.
>We can access a file if we know what the file name is. It is therefore
>possible to manipulate (rm/cp/ls) any single file and possibly a number of
>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
>images contain some demographic information compiled from various sources
>within our company.
>
Are they strictly numeric filenames?
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
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.
| < Previous | Next > |