Dưới đây là một kịch bản đơn giản mà bạn có thể sử dụng. Tôi thích sử dụng mô-đun phi tiêu chuẩn File::chdir
để xử lý các hoạt động quản lý cd
, do đó, để sử dụng tập lệnh này như là, bạn sẽ cần cài đặt nó (sudo cpan File::chdir
).
#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
use File::chdir; # allows cd-ing by use of $CWD, much easier but needs CPAN module
die "Usage: $0 dir prefix" unless (@ARGV >= 2);
my ($dir, $pre) = @ARGV;
opendir(my $dir_handle, $dir) or die "Cannot open directory $dir";
my @files = readdir($dir_handle);
close($dir_handle);
$CWD = $dir; # cd to the directory, needs File::chdir
foreach my $file (@files) {
next if ($file =~ /^\.+$/); # avoid folders . and ..
next if ($0 =~ /$file/); # avoid moving this script if it is in the directory
move($file, $pre . $file) or warn "Cannot rename file $file: $!";
}
Nguồn
2011-01-25 16:06:45
hãy cẩn thận về tên tệp có không gian trong đó ... – Alnitak
Heh, true, điều này sẽ hoàn toàn không hoạt động nếu bạn có tệp có không gian trong đó. – CanSpice
Nếu bạn thay đổi lệnh 'ls' thành' * 'và đặt dấu ngoặc kép xung quanh các đối số thành' mv', nó sẽ làm việc cho các tệp có chứa dấu cách. –