#!/usr/bin/perl use strict; use warnings; use lib '../..' ; use File::Copy; use File::Find; use File::Path; my $root_dir = find_root_dir; our $prefix; sub wanted { my ($file)=$_; return if -d $file; return if $File::Find::dir ne $root_dir; my $dir_to_make = categorize($file); File::Path::make_path($dir_to_make); File::Copy::move($file, $dir_to_make); } sub find_root_dir { use Local::Config; Local::Config->new->logdir; } sub categorize { my($file)=@_; substr($file, 0, 5); } File::Find::find(\&wanted, $root_dir); # thanks to jhannah in #perl-help # [09:52] Is there a utility to move files into a directory based on a prefix of the name? # [09:54] "mv foo* bar/"? # [09:54] mxf, yes, but there are tons of files which must be automatically moved and directories created for them # [09:55] trivial to write one? # [09:55] jhannah, I suppose I need one of the File::Find modules to do it # [09:55] people seem to lieke F::F::Rules? # [09:55] metaperl_work, Ah, i see. # [09:55] why? glob the dir in question, split your prefix, create the dirs, move files # [09:56] how is this more than 6 lines of perl? # [09:56] for file in <*> { ... } # [09:56] for my $file <*> { ... } # [09:56] ? # [09:56] next unless -f $file # [09:56] foreach $file (glob "/path/to/dir") { } # [09:56] my $file