Kebmans blogg

Gi nye filetternavn til flere filer samtidig

Posted in Programmering, Scripting, Teknologi by kebman on 23/12/2012

Sannsynligvis har du vært borti at du trenger å gi nytt filetternavn til flere filer av samme type. Det er noe skikkelig herk, så derfor skrev jeg et lite Perl-script for å gjøre jobben raskere.
Her er det:

#!/usr/bin/perl
# ChSuff v1.0 by Kebman
# Change the suffixes of all files of a given type in a dir
use strict;
use warnings;
use File::Copy;

if ($#ARGV +1 == "2") {
	if ($ARGV[0] eq $ARGV[1]) {
		print "Sorry arguments cannot be equal.\n";
	} else {

		# -- Main Code -- #
		my $old_suffix = "." . "$ARGV[0]";
		my $new_suffix = "." . "$ARGV[1]";

		my @old_filenames = grep (-f, <*$old_suffix>); # store only files with old suffix

		if (scalar(@old_filenames) == 0) { # If there are 0 occurences of given file
			print "Sorry, there are no files with the suffix $old_suffix\n";
		} else {
			my $old_length = length($old_suffix); # Check length of input
			my $old_name;
			my $new_name;
			my $without_suffix;

			foreach $old_name (@old_filenames) { # trip trough the array of filenames
				# remove old suffix with subrstr()
				$without_suffix = substr($old_name, 0, -$old_length);
				# rename the suffix of each file
				$new_name = "$without_suffix" . "$new_suffix";
				move($old_name, $new_name);
			}
		}
		# ---- #
	}
} else {
	print "\033[2J"; # These two incantation clears the screen
	print "\033[0;0H"; # ... and resets the cursor
	print "chsuff v1.0 by Kebman\nRename the suffixes of all files of a certain type in a dir\n";
	print "---\nUSAGE: chsuff [old suffix] [new suffix]\n---\n";
	print "Example: chsuff txt html\n";
	print "Will change the old suffixes all .txt-files to .html in the directory you're in\n";
}

Så langt fungerer det på Mac OS X og dermed sikkert også på Linux-maskiner, men det er usikkert om det vil fungere på en Windows PC grunnet bruken av glob. Føl deg i så fall fri til å skrive om på kildekoden bare du husker å gi meg litt cred.🙂

For ordens skyld, glem nå det lille programmet som på de fleste systemer kalles «rename».😉

Legg igjen en kommentar

Fyll inn i feltene under, eller klikk på et ikon for å logge inn:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut / Endre )

Twitter picture

Du kommenterer med bruk av din Twitter konto. Logg ut / Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut / Endre )

Google+ photo

Du kommenterer med bruk av din Google+ konto. Logg ut / Endre )

Kobler til %s

%d bloggers like this: