- Å mestre mv-kommandoen lar deg gi nytt navn til og flytte mapper og filer i Linux raskt og trygt, både lokalt og på eksterne servere.
- Kommandoene cp og rm utfyller mv for å kopiere, slette og omorganisere hele mapper, og utnytte alternativer som -r, -i, -fy og -v.
- Omdøpningsverktøyet og skallløkker gjør det enkelt å gi filer masseomdøp ved hjelp av mønstre og regulære uttrykk.
- Å bruke riktige stier, sjekke med ls og være forsiktig med jokertegn og destruktive alternativer er nøkkelen til å unngå datatap.

Hvis du jobber med servere eller utvikler prosjekter i Linux, må du før eller siden gi nytt navn til mapper og filer fra terminalen . Det høres enkelt nok ut, men når du er i startfasen, kan det være skremmende å navigere i kommandoer, stier og alternativer, spesielt hvis du kommer fra et grafisk miljø som GNOME, KDE eller lignende og er mer vant til en filbehandler.
Den gode nyheten er at i Linux kan alt dette løses med noen få kraftige kommandoer. Ved å forstå hvordan `mv`, `cp`, `rm` og `rename`-verktøyet fungerer , vil du ha full kontroll over å gi nytt navn til, flytte, kopiere og administrere mapper, både på din lokale maskin og på eksterne servere via SSH.
Grunnleggende konsepter: kataloger, stier og terminal i Linux
Før du berører noe som helst, er det viktig å forstå nøyaktig hva en mappe er i Linux: internt er en katalog en spesiell type fil som lagrer en indeks over navnene på filene og underkatalogene den inneholder. Med andre ord, når vi gir nytt navn til en mappe, kopierer eller endrer vi ikke innholdet; vi endrer bare indeksnavnet.
I Linux er filsystemstrukturen hierarkisk, så stier kan være absolutte eller relative . En absolutt sti starter alltid med / (for eksempel /home/user/project ), mens en relativ sti tolkes basert på gjeldende katalog (for eksempel project/img hvis du allerede er i /home/user).
For å navigere i denne strukturen bruker vi terminalen. ` cd` endrer mapper, ` pwd` viser den nøyaktige banen, og `ls` viser innholdet. Disse tre kommandoene er viktige for å sikre at eksemplene på omdøping som vi ser nedenfor, ikke produserer stifeil.
Når man jobber på servere, spesielt innen webutvikling, er det veldig vanlig å koble til via SSH: `ssh user@server` . Når den er tilkoblet, fungerer alt du gjør med `mv`, `cp`, `rm` og `rename` på samme måte som på den lokale maskinen din, bortsett fra at du nå påvirker filene på den eksterne serveren.
mv-kommandoen: flytting og omdøping av mapper i Linux
Det viktigste verktøyet for å gi mapper nytt navn i Linux er `mv`- kommandoen , en forkortelse for «move». Dens primære funksjon er å flytte filer og mapper, men den fungerer også perfekt for å gi dem nytt navn uten å fysisk flytte dem.
Den generelle syntaksen til mv er veldig enkel: mv SOURCE DESTINATION . SOURCE-parameteren er filen eller mappen som allerede finnes, mens DESTINATION er det nye navnet eller banen (pluss navnet) dit vi vil flytte eller gi den nytt navn.
Hvis du vil se alle tilgjengelige alternativer, kan du kjøre `mv --help` i terminalen. Du vil se noe som `mv ... `, sammen med en liste over parametere og flagg som tilpasser oppførselen til dine behov.
De mest brukte `mv`-alternativene når du arbeider med mapper og filer er `-f`, `-i`, `-u` og `-v` . De er ikke obligatoriske, men de gir deg betydelig kontroll og sikkerhet, spesielt når du risikerer å overskrive noe viktig ved et uhell.
Flere nyttige alternativer for mv-kommandoen
Når du begynner å gi nytt navn til og flytte ting fra konsollen, er det skumleste å overskrive en fil eller mappe ved et uhell . Derfor finnes det flere `mv`-flagg du bør huske fordi du vil bruke dem ofte.
Med alternativet -i (interaktiv) vil mv spørre deg før en eksisterende destinasjon overskrives. Hvis for eksempel destinasjonskatalogen har samme navn som den du vil flytte, vil mv be om bekreftelse, og du kan skrive y/n for å fortsette eller avbryte.
-f (force) -flagget gjør det stikk motsatte: det spør ikke om noe og overskriver vilkårlig . Det er nyttig i automatiserte skript eller når du er sikker på at målet kan overskrives, men det er ikke lurt å bruke det lett hvis du fortsatt lærer.
-u- alternativet vil bare flytte eller gi nytt navn når kildefilen er nyere enn målfilen, eller når målfilen ikke finnes ennå. Dette er nyttig hvis du synkroniserer mapper og vil unngå unødvendige erstatninger.
Til slutt, -v (verbose)-alternativet lar mv vise hva den gjør i hvert trinn. Det vil si at du vil se linjer som omdøpt til 'img' -> 'images' , noe som er veldig nyttig for å holde oversikt over operasjoner med mange filer.
Slik gir du nytt navn til en mappe i Linux med mv
For å gi en mappe nytt navn uten å flytte den, trenger du bare å angi gjeldende navn og det nye navnet. Den grunnleggende metoden ville være `mv old_folder new_folder` , alltid mens den er i den overordnede mappemappen til den mappen.
Tenk deg at du har en mappe som heter img i prosjektet ditt, og du vil gi den nytt navn til images . Hvis du allerede er i prosjektkatalogen, kjører du ganske enkelt mv img images , og du vil si farvel til det gamle navnet på et øyeblikk.
For et mer eksplisitt eksempel kan du først liste opp innholdet med `ls -l` , sjekke `img`- katalogen , kjøre kommandoen `mv -v img images` , og deretter bekrefte igjen med `ls -l` at bare `images` vises . Suffikset `-v` vil vise omdøpningsmeldingen for å eliminere eventuell forvirring.
Det er viktig å merke seg en detalj som ofte forårsaker forvirring i starten: du setter ikke en "/" på slutten av katalognavnet når du gir det nytt navn . Det vil si at du skriver mv img images og ikke mv img/ images/ , fordi i denne sammenhengen er den etterfølgende skråstreken ikke nødvendig og kan føre til feil hvis du blander den med andre stier.
Gi nytt navn til og flytt en mappe samtidig
En av fordelene med `mv` er at den lar deg flytte en mappe til en annen plassering og gi den nytt navn samtidig, alt i én kommando. Dette er utrolig nyttig når du omorganiserer et stort prosjekt eller rydder opp i en serverstruktur.
La oss si at du har en mappe som heter GammeltProsjekt i din nåværende mappe, og du vil flytte den til /home/user/Workspace , og gi den nytt navn til NyttProsjekt . Kommandoen vil se slik ut: mv GammeltProsjekt /home/user/Workspace/NyttProsjekt.
Hvis du bare vil gå opp ett nivå i hierarkiet mens du beholder navnet, kan du bruke relative stier. Hvis du for eksempel vil flytte img -mappen til den overordnede katalogen uten å gi den nytt navn, bruker du ganske enkelt `mv img ../img` . I dette tilfellet betyr `..` "katalogen ovenfor".
Du kan også flytte den til en annen mappe og gi den nytt navn mens du er i gang. Hvis du har en «files» -mappe i prosjektet ditt og du vil gi nytt navn til «img » inni «files», bruker du ` mv img files/images` . Etter å ha kjørt det, vil den endelige banen være noe sånt som `./ files/images`.
Husk at når du flytter en katalog mellom steder, og kilde- og målfilsystemene er de samme, foretar `mv` en veldig rask endring av referanse. Men hvis de er på forskjellige filsystemer , tilsvarer operasjonen å kopiere alt innholdet og deretter slette originalen, noe som kan ta ganske lang tid hvis mappen er stor.
Gi nytt navn til mapper og filer på eksterne servere ved hjelp av SSH
I webutviklings- og produksjonsmiljøer er det veldig vanlig å jobbe på Linux-servere som nås via SSH. Fra det tidspunktet av påvirker alle kommandoer som utføres i terminalen serverens filer, så å gi mapper nytt navn eksternt er det samme som å gjøre det lokalt.
For å koble til en server bruker du vanligvis en kommando som `ssh your-user@your-server` . Når du er autentisert, vil du se den eksterne ledeteksten og kan navigere ved hjelp av `cd` , liste opp kataloger med `ls` og gi nytt navn til kataloger med `mv old_folder new_folder` på nøyaktig samme måte.
Den eneste praktiske forskjellen sammenlignet med din lokale maskin er at du må være mer forsiktig her, fordi en navneendringsfeil i produksjon kan ødelegge stier som brukes i applikasjoner, skript, symbolske lenker eller interne systemkonfigurasjoner.
For å minimere risikoen er det lurt å kombinere `mv` med `ls` før og etter hver operasjon, og også bruke `mv -i` for å be om bekreftelse når det er mulighet for overskriving. Å jobbe med absolutte stier bidrar også til å unngå forvirring med gjeldende kataloger.
Når du gir nytt navn til mapper eller filer som brukes av skript, tjenester eller webapplikasjoner, må du kontrollere at det ikke finnes noen hardkodede stier med det gamle navnet . Hvis det finnes noen, må du oppdatere dem slik at de peker til det nye navnet for å unngå 404-feil, feil ved ressursinnlasting eller tjenester som ikke starter.
Kopier mapper i Linux med cp før du gir nytt navn
Selv om `mv` lar deg gi nytt navn direkte, finnes det mange situasjoner der du foretrekker å spille det trygt og jobbe med en kopi før du berører originalen. Det er her `cp`- kommandoen kommer inn i bildet , som er ansvarlig for å kopiere filer og mapper.
Den grunnleggende syntaksen til cp kan oppsummeres som cp SOURCE DESTINATION . Hvis SOURCE er en fil, er det ikke mye komplikasjon; men hvis du vil kopiere en hel mappe, er det en viktig nyanse: du må bruke -r eller -R- alternativet for å gjøre kopien rekursiv og inkludere alt innholdet.
Hvis du for eksempel trenger å duplisere fonts- mappen på samme sted med et annet navn, kan du gjøre noe sånt som `cp -r fonts/fonts2` . Skråstreken etter `fonts` anbefales for å gjøre det klart at det er en katalog, selv om `cp` vanligvis antar dette. Uansett anbefaler mange guider dette formatet for å unngå feiltolkning.
Hvis du vil kopiere den samme mappen fra én katalog til en annen, bruk relative eller absolutte stier etter behov. Et klassisk eksempel ville være `cp -r fonts/ ../fonts2` , som kopierer `fonts`-mappen til den overordnede katalogen med navnet `fonts2`, og lar den opprinnelige mappen være intakt.
Blant cp-alternativene er de vanligste -i (spør om bekreftelse før overskriving), -v (verbal modus for å vise fremdrift), og selvfølgelig -r/-R for å indikere katalogrekursjon. Du kan se resten med `man cp` eller `cp --help` hvis du vil finjustere kopiene dine.
Gi filer nytt navn i Linux med mv
Alt vi har sett for mapper gjelder likt for individuelle filer: mv fungerer både for å flytte og gi nytt navn til en fil , og syntaksen er så godt som identisk, men på filnivå.
Hvis du er i en katalog som inneholder filen file1.txt og du vil gi den nytt navn til file2.txt , kjører du bare `mv file1.txt file2.txt` . Innholdet forblir det samme, bare filnavnet.
Hvis du ikke er i riktig katalog, naviger først ved hjelp av `cd` eller angi hele banen i kommandoen. Du kan gjøre noe sånt som `cd /home/user/docs/files` og deretter `mv archivo1.txt archivo2.txt` , eller direkte `mv /home/user/docs/files/archivo1.txt /home/user/docs/files/ archivo2.txt`.
For å gi deg en idé, er det å gi en fil nytt navn med mv konseptuelt likt med å " kopiere den til et nytt navn og slette originalen", selv om filsystemet internt administrerer den mye mer effektivt og uten å duplisere data.
Som med mapper, hvis du flytter en fil mellom forskjellige filsystemer, vil mv internt lage en kopi og deretter slette originalen. Hvis den forblir innenfor samme system, endrer den bare interne referanser , og operasjonen er umiddelbar.
Gi nytt navn til flere filer samtidig ved hjelp av løkker og finn
mv i seg selv har ikke et spesifikt alternativ for å gi mange filer nytt navn samtidig , men det fungerer utmerket med Linux-skallet, slik at du kan kombinere det med for loops, while loops eller find-kommandoen for å utføre massedøping.
Et typisk eksempel er å endre filtypen på et sett med filer. Hvis du vil at alle .txt-filene i din nåværende mappe skal bli .pdf, kan du bruke en for-løkke slik: for f in *.txt; do mv — "${f}" "${f%.txt}.pdf"; done . Denne løkken iterererer gjennom hver fil som slutter på .txt, "kutter" .txt-delen og erstatter den med .pdf.
Denne typen løkke er svært fleksibel og lar deg utføre så godt som alle navnetransformasjoner du kan uttrykke ved hjelp av skallsyntaks. Det er imidlertid lurt å teste den først i en testkatalog for å unngå problemer hvis du ikke er kjent med parameterutvidelser ennå.
Du kan også bruke `finn` til å finne filer som oppfyller visse betingelser (etter navn, type, dato osv.) og bruke `mv` på dem i en `-exec`-handling eller med en `while`-løkke, og lese resultatene. Dette er veldig nyttig for mer kompleks navneendring i store katalogstrukturer.
Hvis alt dette høres litt avansert ut, ikke bekymre deg: over tid vil du se at det å kombinere mv med løkker sparer deg for mye arbeid og lar deg automatisere repeterende oppgaver med bare noen få linjer med skallskript.
Rename-kommandoen: avansert masseendring av navn
I tillegg til mv har mange distribusjoner et verktøy kalt rename , som er spesielt utviklet for å gi nytt navn til hele grupper med filer på en svært kraftig måte , ved hjelp av regulære Perl-uttrykk.
Denne kommandoen er ikke alltid forhåndsinstallert, men det er trivielt å legge den til. På Debian, Ubuntu, Linux Mint og derivater kan du bruke `sudo apt install rename` . På CentOS eller RHEL er den vanlige metoden `sudo yum install rename` . Og på Arch Linux brukes vanligvis pakker som `perl-rename` fra AUR (for eksempel med `yay` eller `yaourt`).
Den typiske syntaksen for `rename` ser slik ut: `rename 's/old_pattern/new_pattern/' files` . Det som står mellom anførselstegnene er et regulært Perl-uttrykk for erstatning, der "s/this/for_this/" indikerer hvilket mønster du vil finne og hva du vil erstatte det med.
Hvis du for eksempel har opprettet noen filer i en katalog kalt file1.txt, file2.txt, file3.txt, file4.txt og file5.txt (noe du raskt kan gjøre med mkdir filestorename; cd filestorename; touch file{1..5}.txt ), kan du bare endre navn på file1.txt til newfile1.txt med rename 's/file1/newfile1/' file1.txt.
Hvis du trenger å endre filtypen på alle .txt-filer til .php, kan du ganske enkelt kjøre `rename 's/.txt/.php/' *.txt` . Etter at du har kjørt kommandoen, kan du sjekke hva som skjedde med `ls` for å forsikre deg om at alle navnene har blitt transformert som forventet.
Praktiske eksempler med omdøping: store bokstaver, små bokstaver og mellomrom
En av fordelene med `rename` er at det, takket være Perls regulære uttrykk , tillater svært spesifikke transformasjoner som ville være ganske tungvinte med en enkel løkke og `mv`. Det finnes flere typiske brukstilfeller som er verdt å huske på.
Hvis du vil konvertere alle filnavn i en katalog til store bokstaver , kan du kjøre noe som å gi nytt navn til 'y/az/AZ/' * . Denne syntaksen bruker translitterasjonsoperasjonen "y", som erstatter hver liten bokstav med den tilsvarende store bokstaven.
For å gjøre det motsatte, det vil si å konvertere alle navn til små bokstaver , ville kommandoen være `rename 'y/AZ/az/' *` . Dette er veldig nyttig når du støter på systemer der blandingen av store og små bokstaver har kommet ut av kontroll over tid.
Et annet vanlig problem er filer med mellomrom i navnene, noe som kan være ganske irriterende når man jobber i terminalen. Du kan erstatte mellomrom med understrek ved å bruke noe som ` rename 'y/ /_/' *` , og dermed unngå å måtte bruke omvendte skråstreker eller anførselstegn for mellomrommene.
Hvis filene som skal endres er i en annen katalog, kan du også sende banen direkte til `rename`, for eksempel `rename 's/.txt/.php/' PATH/TO/FILES` . På denne måten trenger du ikke å endre kataloger før du kjører kommandoen.
For å se alle alternativene som støttes av din spesifikke versjon av `rename`, anbefales det å kjøre ` rename --help` eller sjekke man-siden. Husk at det finnes distribusjonsspesifikke varianter av `rename`, så det er alltid lurt å bekrefte den nøyaktige syntaksen som er tilgjengelig på systemet ditt.
Fjern omdøpningsverktøyet når du ikke lenger trenger det
Hvis du på et tidspunkt bestemmer deg for at du ikke vil at rename skal være installert på systemet ditt (for eksempel fordi du på en produksjonsserver foretrekker å begrense tilgjengelige verktøy), kan du enkelt avinstallere det ved å bruke samme pakkebehandler som du brukte til å installere det.
På Debian-baserte distribusjoner som Ubuntu eller Linux Mint kan du kjøre `sudo apt remove rename` . Dette vil fjerne pakken og gjøre den utilgjengelig i terminalen, men du kan alltid installere den på nytt senere hvis du går glipp av den.
I CentOS, RHEL og derivater er den tilsvarende kommandoen for å fjerne pakken vanligvis sudo yum remove rename , som vil fjerne verktøyet for massedøping fra systemet.
Uansett, selv uten å endre navn på mapper og filer installert, vil du alltid ha muligheten til å gi nytt navn til mapper og filer med mv , og om nødvendig bygge dine egne skallskript for å automatisere mer komplekse oppgaver.
Nøkkelen er å velge verktøyet som passer best til arbeidsflyten din og miljøet du opererer i: på en personlig maskin kan det være fornuftig å ha alt installert, mens på en svært kritisk server foretrekker du kanskje å gå for en mer "diett" av tilleggskommandoer.
Slette filer og mapper med rm: vær forsiktig når du rydder
I enhver filorganiseringsoperasjon kommer det vanligvis et tidspunkt for å slette det som ikke lenger er nødvendig. I Linux er kommandoen som er ansvarlig for dette `rm` , som lar deg slette både individuelle filer og hele mapper.
Den generelle syntaksen for rm kan skrives som rm FILE… . Hvis du vil slette en enkelt fil, for eksempel en gammel loggfil, vil noe så enkelt som rm file.log gjøre susen, forutsatt at du har de nødvendige tillatelsene.
For å jobbe med kataloger må du bruke alternativet -r eller -R , som aktiverer rekursiv sletting. For eksempel vil `rm -r folder` forsøke å slette mappen og alt innholdet (inkludert underkataloger og filer), men den vil gjøre det uten å be om bekreftelse for hvert element med mindre du legger til flere flagg.
Hvis du vil gå et skritt videre og tvinge frem sletting selv når det er restriksjoner eller skrivebeskyttede filer, finnes kombinasjonen `rm -rf folder` , som blander rekursjon og "tvangssletting". Den er veldig kraftig, men også veldig farlig: konsentrasjonssvikt med denne kommandoen kan slette halve datamaskinen din.
Derfor, i miljøer der du foretrekker å være mer forsiktig, er det lurt å kombinere -r med -i , slik at rm spør deg om du vil slette hver fil eller katalog. Noe som rm -ri folder vil tvinge deg til å bekrefte hvert trinn, noe som reduserer risikoen for å slette noe du ikke burde.
Slett tomme mapper og andre detaljer fra rm
I tillegg til `rm` finnes det en spesifikk kommando kalt `rmdir` hvis eneste funksjon er å slette tomme mapper . Hvis mappen inneholder noe, vil `rmdir` feile og advare deg om at den ikke kan slette det fordi det ikke er tomt.
Dette gjør rmdir til et litt tryggere alternativ når du vil rydde opp i mapper du vet ikke lenger inneholder filer, for eksempel etter at du har flyttet innholdet til et annet sted. For å se alle alternativene kan du kjøre `man rmdir` fra terminalen.
Når vi går tilbake til rm, må du i tillegg til -i, -f, -r/-R og -v (for å liste opp hva som slettes), huske at du kan bruke jokertegn som * og ? for å velge grupper av filer. Et typisk eksempel er å slette alle .txt-filer fra en katalog med noe som rm *.txt.
Det er også mulig å slette flere filer samtidig ved å spesifisere dem eksplisitt, for eksempel `rm file1.log file2.log file3.log` . Dette sparer deg for å skrive `rm` flere ganger når du vet nøyaktig hvilke filer du vil slette.
Uansett, når du skal kjøre en rm med jokertegn eller med -r, er det verdt å gjennomgå kommandoen før du trykker Enter, og om mulig å gjøre en tidligere ls for å sjekke hvilke filer som samsvarer med mønsteret du har brukt.
Å mestre rm, mv, cp og, når det er nødvendig, rename vil la deg jobbe problemfritt både på Linux-skrivebordet ditt og på eksterne servere. Du kan gi nytt navn til mapper og filer, flytte, kopiere eller slette dem uten å være avhengig av det grafiske miljøet, og med tryggheten av å vite nøyaktig hva du gjør til enhver tid.