Rename pictures in the command-line interface

Dário P. fbsd.questions.list at gmail.com
Mon Jan 4 19:14:11 UTC 2010


Seg, 2010-01-04 às 19:16 +0100, Polytropon escreveu:

> Keep in mind that the script follows the csh's sorting
> order to resolve *, which usually is lexicographical
> order.

The sorting order is not a big problem for me, at least for now. I'm
doing the renaming in one machine with GUI then I upload the pictures to
another machine. The only reason that I need this, is because sometimes
I delete one picture on the other machine and then I have to rename
everything again.

> So if you wish to do some file preparation, know that the
> powerful Midnight Commander can do this for you (select and
> PF6).

Anyway, I gonna look at it.

> Here's the script now. Put it in ~/bin (and add this directory
> to your $PATH) as "renumber" (or any name you like), give it +x
> permissions and "rehash" to make it available to the C shell.
> Then, use "renumber <prefix> <suffix>". It will process ALL
> files in the current directory (as I said: ugly as sin).
> 
> 
> #!/bin/csh
> if ( $1 == "" || $2 == "" ) then
> 	echo "Usage: renumber <base> <extension>"
> 	echo "       Target form: <base>_nn[n].<extension>"
> 	echo "       For 1 to 99 files: nn; for more than 99 files: nnn"
> 	exit 1
> endif
> 
> set n = `ls -l | wc | awk '{print $1}'`
> set num = `expr $n - 1`
> echo "${num} files to handle."
> 
> set base = $1
> set extn = $2
> set n = 0
> foreach f ( *.${extn} )
> 	set n = `expr $n + 1`
> 	if ( ${num} > 99 ) then
> 		if ( ${%n} == 1 ) then
> 			mv "${f}" "${base}_00${n}.${extn}"
> 		else if ( ${%n} == 2 ) then
> 			mv "${f}" "${base}_0${n}.${extn}"
> 		else
> 			mv "${f}" "${base}_${n}.${extn}"
> 		endif
> 	else
> 		if ( ${%n} == 1 ) then
> 			mv "${f}" "${base}_0${n}.${extn}"
> 		else
> 			mv "${f}" "${base}_${n}.${extn}"
> 		endif
> 	endif
> end
> 
> 

Thanks alot. :)



More information about the freebsd-questions mailing list