That may not work correctly, depending on what characters are in the file name:
$ ls -l total 0 -rw-r--r-- 1 john john 0 Feb 1 20:23 four -rw-r--r-- 1 john john 0 Feb 1 20:23 one -rw-r--r-- 1 john john 0 Feb 1 20:23 two ? three $ ls | perl -nle 'BEGIN { $counter = 0 }; $old = $_; $new = "caption" +. "$counter" . ".txt"; rename( $old, $new ); $counter++;' $ ls -l total 0 -rw-r--r-- 1 john john 0 Feb 1 20:23 caption0.txt -rw-r--r-- 1 john john 0 Feb 1 20:23 caption1.txt -rw-r--r-- 1 john john 0 Feb 1 20:23 two ? three
Better to use perl's built-in glob function:
$ ls -l total 0 -rw-r--r-- 1 john john 0 Feb 1 20:28 four -rw-r--r-- 1 john john 0 Feb 1 20:28 one -rw-r--r-- 1 john john 0 Feb 1 20:28 two ? three $ perl -e '$counter = 0; for ( <*> ) { $old = $_; $new = "caption" . " +$counter" . ".txt"; rename( $old, $new ); $counter++; }' $ ls -l total 0 -rw-r--r-- 1 john john 0 Feb 1 20:28 caption0.txt -rw-r--r-- 1 john john 0 Feb 1 20:28 caption1.txt -rw-r--r-- 1 john john 0 Feb 1 20:28 caption2.txt
In reply to Re: Renaming all files in a directory
by jwkrahn
in thread Renaming all files in a directory
by Aldebaran
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |