Grzegorz Brzęczyszczykiewicz rašė:
> Aloha,
>
> pasirodo Free Commander XE turį įdėta multi-rename opciją. Valanda mano
> gyvenimo ciuickiui į Odegą.
>
> Jei kam prireiks ...
Na, kodėl iš karto į odegą, kai yra dar penkta koja...? :-)
Prisiminti shell'o sintaksę – verta valandinio prokrastinaišin grieko
(ir satisfakcija garantuota).
Silpnumo akimirką, kai prisireikia greitai pataisyti/pervadinti tuntus
failų kartai kyla pagunda „gal jau čia kokį multi-rename GUI tūlzzzą
pasileisti“, tačiau viskas laimingai baigiasi find/(power)shell ir
galbūt net greičiau (net ir su pasimanualinimu), nei anojo paieškos ir
bandymai...
Powershell'as:
$What = "MM28-DP-"
$With = "MM28-01-DP-"
Get-ChildItem -Path <DIR> -File | where { $_.Name -match "^${What}" |
foreach {
$new = $_ -replace $What, $With
Write-Info "Preview: moving $_ to $new"
#$_.MoveTo($new)
}
Kas gerai, kad interaktyvu ir gana (aki)vaizdu kiekviename žingsnyje.
Na ir aišku klasika:
find <DIR> -type f -name "MM28-DP-*" -exec rename.sh "{}" "MM28-DP-"
"MM28-01-DP-" \;
$ cat rename.sh
#!/bin/sh
file="$1"
find="$2"
repl="$3"
dir=$(dirname $file)
old=$(basename $file)
new=$(echo $old | sed -E "s|$find|$repl|")
if [ $? -eq 0 ]; then
if [ "$new" = "$old" ]; then
echo "Can't rename $old (filename hasn't changed)"
elif [ -e "$dir/$new" ]; then
echo "Can't rename '$old' to '$new' (file already exist)"
else
echo "Renaming '$old' to '$new' in $dir"
mv "$dir/$old" "$dir/$new"
fi
fi
p.s. Taip, dar yra rename.ul (util-linux), prename (perl rename), mmv
