Tema: Re: Muti -rename
Autorius: Laimis
Data: 2023-06-19 09:48:15
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

3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser