#!/usr/bin/perl use v6; my Int $files_renames_count = 0; for dir(".") -> IO::Path $current_file { my Str $cur_filename = $current_file.basename; next if $cur_filename.IO ~~ :d; #skip directories (see http://doc.perl6.org/type/IO) my Str $new_filename = $cur_filename.subst( /(.+)\.txt/, { $/[0] ~ " (2).txt" }, # doesn't works :( $/[0] is always empty # works with $_[0] however (???) :i # case insensitive replacement ); if ($new_filename ne $cur_filename) { if ($new_filename.IO ~~ :e) { say "skipping file $cur_filename : $new_filename already exists"; } else { say "renaming $cur_filename in $new_filename"; rename $cur_filename, $new_filename; $files_renames_count++; } } } say "$files_renames_count files renammed";