Pieter Verberne | 27 Jun 14:33
Picon
Picon
Favicon

Rename multiple files at once

Hi there,

How do I rename multiple files at once? I want to rename a list of
files like:

file.jpg
file1.jpg
file_2.jpg

to:

file_thumb.jpg
file1_thumb.jpg
file_2_thumb.jpg

man mv(1) says nothing about REGEX. (although I don't know REGEX
(yet))

Kind regard,
Pieter Verberne

Antoine Jacoutot | 27 Jun 14:49
Favicon

Re: Rename multiple files at once

On Wednesday 27 June 2007 14:37:07 Pieter Verberne wrote:
> Hi there,
>
> How do I rename multiple files at once? I want to rename a list of
> files like:
>
> file.jpg
> file1.jpg
> file_2.jpg
>
> to:
>
> file_thumb.jpg
> file1_thumb.jpg
> file_2_thumb.jpg
>
> man mv(1) says nothing about REGEX. (although I don't know REGEX
> (yet))

Use basename(1).
Something like (ugly, NOT TESTED!):

$ for i in *.jpg ; do mv $i `basename $i .jpg`_thumb.jpg ; done

--

-- 
Antoine

Picon

Re: Rename multiple files at once

2007/6/27, Pieter Verberne <pieterverberne <at> xs4all.nl>:
> How do I rename multiple files at once? I want to rename a list of
> files like:

mmv is in ports.

Best
   Martin

Landry Breuil | 27 Jun 15:02
Picon

Re: Rename multiple files at once

2007/6/27, Martin Schrvder <martin <at> oneiros.de>:
>
> 2007/6/27, Pieter Verberne <pieterverberne <at> xs4all.nl>:
> > How do I rename multiple files at once? I want to rename a list of
> > files like:
>
> mmv is in ports.

Or, if you're lazy and use X and all that kind of fancy stuff, you can use
x11/xfce4/thunar, a file-manager with a builtin batch-renamer :
http://thunar.xfce.org/documentation/C/advanced-topics.html#to-bulk-rename-fi
les

Landry

Olivier Mehani | 27 Jun 14:53

Re: Rename multiple files at once

On Wed, Jun 27, 2007 at 02:37:07PM +0200, Pieter Verberne wrote:
> How do I rename multiple files at once? I want to rename a list of
> files like:
> file.jpg
> file1.jpg
> file_2.jpg
> to:
> file_thumb.jpg
> file1_thumb.jpg
> file_2_thumb.jpg

Using bash, you can do something like that:

for file in file.jpg file1.jpg file_2.jpg; do
  mv $file ${file/.jpg/_thumb.jpg}
done

--
Olivier Mehani <shtrom <at> ssji.net>
PGP fingerprint: 3720 A1F7 1367 9FA3 C654 6DFB 6845 4071 E346 2FD1

[demime 1.01d removed an attachment of type application/pgp-signature]

Andreas Kahari | 27 Jun 15:48
Picon

Re: Rename multiple files at once

On 27/06/07, Olivier Mehani <shtrom <at> ssji.net> wrote:
> On Wed, Jun 27, 2007 at 02:37:07PM +0200, Pieter Verberne wrote:
> > How do I rename multiple files at once? I want to rename a list of
> > files like:
> > file.jpg
> > file1.jpg
> > file_2.jpg
> > to:
> > file_thumb.jpg
> > file1_thumb.jpg
> > file_2_thumb.jpg
>
> Using bash, you can do something like that:
>
> for file in file.jpg file1.jpg file_2.jpg; do
>   mv $file ${file/.jpg/_thumb.jpg}
> done

Assuming your files are matched by file*.jpg, you can do this in ksh
(the default shell in OpenBSD):

for f in file*.jpg; do
  mv $f ${f%.jpg}_thumb.jpg
done

Cheers,
Andreas

--

-- 
Andreas Kahari
(Continue reading)

Will Maier | 27 Jun 14:54
Favicon

Re: Rename multiple files at once

On Wed, Jun 27, 2007 at 02:37:07PM +0200, Pieter Verberne wrote:
> How do I rename multiple files at once?

This is a function of your shell, not mv. See ksh(1), zsh(1), etc...

Alternatively, you could write a simple script/function to address
the same problem:

    for FILE in *jpg; do
        NEW=$(echo $FILE | sed -e 's/\.jpg$/_thumb.jpg/')
        mv "${FILE}" "${NEW}"
    done

--

-- 

o--------------------------{ Will Maier }--------------------------o
| web:.......http://www.lfod.us/ | email.........willmaier <at> ml1.net |
*------------------[ BSD Unix: Live Free or Die ]------------------*

terry tyson | 27 Jun 15:50
Picon

Re: Rename multiple files at once

On 6/27/07, Will Maier <willmaier <at> ml1.net> wrote:
>
> On Wed, Jun 27, 2007 at 02:37:07PM +0200, Pieter Verberne wrote:
> > How do I rename multiple files at once?
>
> This is a function of your shell, not mv. See ksh(1), zsh(1), etc...
>
> Alternatively, you could write a simple script/function to address
> the same problem:
>
>     for FILE in *jpg; do
>         NEW=$(echo $FILE | sed -e 's/\.jpg$/_thumb.jpg/')
>         mv "${FILE}" "${NEW}"
>     done

Will, I like your use of sed on this. I did a similar thing with awk.

for i in *.jpg do
    outfile=`echo $i | awk -F. '{print $1"_thumb.jpg"}'`
    mv $i $outfile
done

Terry

Sebastian Benoit | 27 Jun 15:25
Picon

Re: Rename multiple files at once

Pieter Verberne(pieterverberne <at> xs4all.nl) on 2007.06.27 14:37:07 +0000:
> Hi there,
>
> How do I rename multiple files at once? I want to rename a list of
> files like:
>
> man mv(1) says nothing about REGEX. (although I don't know REGEX
> (yet))

I like this one, from the Perl Cookbook, Chap. 9.9.

#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

To do your rename:

file.jpg
file1.jpg
file_2.jpg

to:

(Continue reading)

Marian Hettwer | 27 Jun 15:36
Picon
Favicon

Re: Rename multiple files at once

Hi Pieter,

On Wed, 27 Jun 2007 14:37:07 +0200, Pieter Verberne <pieterverberne <at> xs4all.nl> wrote:
> Hi there,
> 
> How do I rename multiple files at once? I want to rename a list of
> files like:
> 
> file.jpg
> file1.jpg
> file_2.jpg
> 
> to:
> 
> file_thumb.jpg
> file1_thumb.jpg
> file_2_thumb.jpg
> 
Assuming that your files have only one . in their filename (just foo.jpg, not foo.bar.jpg), you could do
this shell hack:

cd directory/with/your/files
for i in $(ls | cut -d. -f1); do echo "renaming ${i}"; mv ${i} ${i}_thumb.jpg; done

This is bourne shell syntax (works in my bash) and assumes that you only have one dot in your filename.
Otherwise the "ls | cut -d. -f1" thing wouldn't work ;)

Cheers,
./Marian

(Continue reading)

Han Boetes | 27 Jun 16:48
Picon
Favicon

Re: Rename multiple files at once

Pieter Verberne wrote:

> How do I rename multiple files at once? I want to rename a list
> of files like:
>
> file.jpg
> file1.jpg
> file_2.jpg
>
> to:
>
> file_thumb.jpg
> file1_thumb.jpg
> file_2_thumb.jpg

for i in *.jpg; do 
    echo mv $i ${i%.jpg}_thumb.jpg
done

# Han

Matthias Kilian | 28 Jun 00:37
Picon

Re: Rename multiple files at once

On Wed, Jun 27, 2007 at 02:37:07PM +0200, Pieter Verberne wrote:
> How do I rename multiple files at once? I want to rename a list of
> files like:
> 
> file.jpg
> file1.jpg
> file_2.jpg
> 
> to:
> 
> file_thumb.jpg
> file1_thumb.jpg
> file_2_thumb.jpg

given that no funny filenames (with space, quotes etc.) are around,
and that i'm not mistyping the following line:
ls *.jpg | sed 's@\(.*\)\.jpg$@mv & \1_thumb.jpg@' | sh


Gmane