createing directories and moving files into it

B

Bee Tard

I have an undetermined list of directories.

I am trying to loop through them all and in each one I want to make a
directory called 'images'. when i do this, I want o move all the imagges
in that folder into it.

so i have a tree like this:

some-dir
\_abc
- img00971273.jpg
- img21234235.jpg
- img12345623.jpg
\_123
- img99554361.jpg
- img21234235.jpg
- img53840534.jpg
\_xyz
- img00930443.jpg
- img12364235.jpg
- img09982623.jpg
\_890
- img00923871.jpg
- img21292835.jpg
- img08836823.jpg

I would like to create


some-dir
\_abc
\__images
- img00971273.jpg
- img21234235.jpg
- img12345623.jpg

And so on and so forth.

Hope this illustration makes sense. I have tried to create a loop and go
through each directory and use system() to 'mkdir images' and mv *.jpg
/images

no luck as yet. really starting to like some of Ruby's fileutils. just
wish i could get moving with some of these tasks :)

All help greatly appreciated. I'll buy you a beer at lunch.
 
A

Axel Etzold

-------- Original-Nachricht --------
Datum: Wed, 29 Oct 2008 02:53:09 +0900
Von: Bee Tard <[email protected]>
An: (e-mail address removed)
Betreff: createing directories and moving files into it
I have an undetermined list of directories.

I am trying to loop through them all and in each one I want to make a
directory called 'images'. when i do this, I want o move all the imagges
in that folder into it.

so i have a tree like this:

some-dir
\_abc
- img00971273.jpg
- img21234235.jpg
- img12345623.jpg
\_123
- img99554361.jpg
- img21234235.jpg
- img53840534.jpg
\_xyz
- img00930443.jpg
- img12364235.jpg
- img09982623.jpg
\_890
- img00923871.jpg
- img21292835.jpg
- img08836823.jpg

I would like to create


some-dir
\_abc
\__images
- img00971273.jpg
- img21234235.jpg
- img12345623.jpg

And so on and so forth.

Hope this illustration makes sense. I have tried to create a loop and go
through each directory and use system() to 'mkdir images' and mv *.jpg
/images

no luck as yet. really starting to like some of Ruby's fileutils. just
wish i could get moving with some of these tasks :)

All help greatly appreciated. I'll buy you a beer at lunch.


Hi ---

you can create a directory, if it doesn't yet exist, using fileutils:

irb(main):001:0> require "fileutils"
=> true
irb(main):002:0> FileUtils.mkdir_p "temp5"
=> "temp5"

If you do it again, that doesn't matter.
For moving files, I like the rio gem:

http://rio.rubyforge.org/


require "rubygems"
require "rio"

Iterate over the .rb files in a directory and its subdirectories.

rio('adir').all.files('*.rb') { |entrio|

# do some checks on entrio.to_s to classify things

if /\.jpg$/.match(entrio.to_s)
p "it's an image
end

}

Do also check that you have writing permissions on the directory you want to write to.

Best regards,

Axel
 
B

Bee Tard

Axel said:
you can create a directory, if it doesn't yet exist, using fileutils:

irb(main):001:0> require "fileutils"
=> true
irb(main):002:0> FileUtils.mkdir_p "temp5"
=> "temp5"

If you do it again, that doesn't matter.
For moving files, I like the rio gem:

http://rio.rubyforge.org/

require "rubygems"
require "rio"

Iterate over the .rb files in a directory and its subdirectories.

rio('adir').all.files('*.rb') { |entrio|

# do some checks on entrio.to_s to classify things

if /\.jpg$/.match(entrio.to_s)
p "it's an image
end

}

Do also check that you have writing permissions on the directory you
want to write to.

I did it this way:

for I in *; do mkdir ${I}/myFolder; mv ${I}/* ${I}/myFolder; done

was wondering forever about a ruby way. thanks for the help.
 
B

Bee Tard

I did it this way:
for I in *; do mkdir ${I}/myFolder; mv ${I}/* ${I}/myFolder; done

was wondering forever about a ruby way. thanks for the help.

(in mac os terminal)
 
P

Peña, Botp

RnJvbTogQmVlIFRhcmQgW21haWx0bzpzY2FwcGFAZ21haWwuY29tXSANCiMgSSBkaWQgaXQgdGhp
cyB3YXk6DQojIGZvciBJIGluICo7IGRvIG1rZGlyICR7SX0vbXlGb2xkZXI7IG12ICR7SX0vKiAk
e0l9L215Rm9sZGVyOyBkb25lDQoNCnlvdSBjYW4gZG8gdGhhdCB0b28NCg0Kc3lzdGVtICJmb3Ig
SSBpbiAqOyBkbyBta2RpciAke0l9L215Rm9sZGVyOyBtdiAke0l9LyogJHtJfS9teUZvbGRlcjsg
ZG9uZSINCg0KaSdtIGpva2luZyBvZiBjb3Vyc2UgOykNCg0KdGhhdCBpcyBmaW5lIGlmIHlvdSBo
YXZlIG9ubHkgZm9sZGVycy9kaXJlY3RvcnkgKGllIG5vIHJlZ3VsYXIgZmlsZXMpIGluIHlvdXIg
Y3VycmVudCBkaXIsIGFuZCB5b3VyIGZvbGRlcnMgY29udGFpbiBqdXN0IGltYWdlcy4gDQoNCmlu
IGEgZnVsbC1mbGVkZ2VkIGxhbmd1YWdlLCB5b3VyIGNoZWNraW5nIGlzIGZsZXhpYmxlLCBhbmQg
eW91ciBjb2RlIGlzIHBvcnRhYmxlLiBwbHVzIHlvdSBnZXQgdGhlIHBvd2VyIG9mIHJ1YnkuDQoN
CmFueXdheSwgdHJ5IGVnLA0KDQo8Y29kZT4NCnJlcXVpcmUgJ2ZpbGV1dGlscycNCkRpci5nbG9i
KCJ0ZW1wZi8qIikuc2VsZWN0e3x4fCBGaWxlVGVzdC5kaXJlY3Rvcnk/KHgpfS5lYWNoe3xkaXJ8
DQogIGRlc3RfZm9sZGVyID0gRmlsZS5qb2luKGRpciwiaW1hZ2VzIikNCiAgc3JjZV9maWxlcyAg
PSBEaXIuZ2xvYihGaWxlLmpvaW4oZGlyLCIqLmpwZyIpKQ0KICBEaXIubWtkaXIgZGVzdF9mb2xk
ZXINCiAgRmlsZVV0aWxzLm12IHNyY2VfZmlsZXMsIGRlc3RfZm9sZGVyDQp9DQo8L2NvZGU+DQoN
Cm5vdGUsIHRlbXBmIGlzIGp1c3QgbXkgc2FtcGxlIHRlc3QgZm9sZGVyIHRvIHRlc3QgdGhlIGNv
ZGUgYWJvdmUuDQo=
 
R

rio4ruby

-------- Original-Nachricht --------













Hi ---

you can create a directory, if it doesn't yet exist, using fileutils:

irb(main):001:0> require "fileutils"
=> true
irb(main):002:0> FileUtils.mkdir_p "temp5"
=> "temp5"

If you do it again, that doesn't matter.
For moving files, I like the rio gem:

http://rio.rubyforge.org/

require "rubygems"
require "rio"

Iterate over the .rb files in a directory and its subdirectories.

 rio('adir').all.files('*.rb') { |entrio|

   # do some checks on entrio.to_s to classify things

  if /\.jpg$/.match(entrio.to_s)
    p "it's an image
  end

 }

Do  also check that you have writing permissions on the directory you want to write to.

Best regards,

Axel

Using Rio's rename-mode:

require 'rio'

# This will work if the only images under 'some-dir' are
# as stated in the problem

rio('some-dir').rename.all.files('*.jpg') do |ifile|
ifile.dirname = rio(ifile.dirname,'images').mkdir
end

# This is little more robust

rio('some-dir').dirs do |d|
d.rename.files('*.jpg') do |ifile|
ifile.dirname = rio(ifile.dirname,'images').mkdir
end
end
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top