Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
244 views
in Technique[技术] by (71.8m points)

perl - Script to rename files with the name of the folder?

I want to recursively rename files by prepending the folder name in front of it. Ex: c: estfooa.txt would become c: estfoofoo-a.txt.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The following Perl script may work for you:

#!/usr/bin/env perl

use strict;
use warnings;

use File::Basename;
use File::Find;
use File::Spec;

sub rename {
    my ($dir_name) = ( File::Spec->splitdir($File::Find::dir) )[-1];
    my $file_name = basename $_;
    if ( -f $_ ) {
        $file_name = "$dir_name-$file_name";
        rename $_, File::Spec->catdir( $File::Find::dir, $file_name );
    }
}

find { 'wanted' => &rename, 'no_chdir' => 1 }, 'C:/test/foo';

References:


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...