Linuxon a fájlokat és mappákat az rm és az rmdir paranccsal törölheted, az mv paranccsal nevezheted át vagy helyezheted át, az ln paranccsal pedig linket (hivatkozást) készíthetsz rájuk. A parancsok egyszerűek, de van néhány csapdájuk: a törlés nem vonható vissza, az mv szó nélkül felülírja a célfájlt, egy szimbolikus link törlésekor pedig egy rossz helyen álló perjel a link célját is kiürítheti.
A cikk parancsait 2026 novemberében AlmaLinux 10.2 és Ubuntu 26.04 rendszeren próbáltuk ki. Ugyanígy működnek egy saját KVM VPS-en, és a cPanel Terminal felületén is. Az alapparancsok rövid áttekintését az alapvető Linux parancsokat bemutató cikk adja.
Fájl törlése: rm
rm fajl.txt
rm fajl1.txt fajl2.txt
rm *.log
Linuxon nincs lomtár: amit az rm töröl, az azonnal eltűnik, és a parancssorból nem állítható vissza. Fontos fájlok előtt készíts mentést (lásd: adatok mentése és visszaállítása Linuxon).
Hasznos kapcsolók:
-i: minden fájl előtt rákérdez (rm: remove regular file 'fajl.txt'?), azyválasz törli, aznmegtartja a fájlt;-I: csak egyszer kérdez rá, ha háromnál több fájlt vagy egy mappát rekurzívan töröl (rm: remove 4 arguments?); kevesebb kérdés, de egy elgépelt helyettesítő karakternél még megállítja;-v: kiírja, mit törölt (removed 'fajl.txt');-f: nem kérdez, és nem jelez hibát a nem létező fájlokra.
Ha egy fájl írásvédett (például chmod 444), az rm a terminálban rákérdez: rm: remove write-protected regular empty file 'vedett.txt'?. Az -f ezt a kérdést is elnyomja. Ha a parancs nem terminálból kap bemenetet (szkriptben, cron feladatban), az írásvédett fájlt kérdés nélkül törli.
AlmaLinuxon a root felhasználó .bashrc fájljában alapból szerepel az alias rm='rm -i' sor, ezért sudo -i után az rm minden fájlra rákérdez. A sudo rm viszont nem használja az aliast, és nem kérdez; az Ubuntu 26.04-en a rootnak sincs ilyen aliasa. Saját aliasok készítéséről a bash aliasokról szóló cikk szól.
Mappa törlése tartalommal együtt: rm -r
Üres mappát az rmdir töröl. Ha a mappában van valami, hibát ad, és a sima rm sem törli a mappát:
$ rmdir regi-oldal
rmdir: failed to remove 'regi-oldal': Directory not empty
$ rm regi-oldal
rm: cannot remove 'regi-oldal': Is a directory
A mappát a teljes tartalmával együtt az -r (rekurzív) kapcsoló törli:
rm -r regi-oldal
rm -rv regi-oldal # kiírja, mit törölt
rm -rI regi-oldal # előtte egyszer rákérdez
Az rm -rf veszélyei
Az rm -rf kérdés nélkül, a hibákat is elnyomva töröl mindent, amit kap. A legtöbb baj nem a paranccsal, hanem a kapott útvonallal történik:
- Szóköz egy útvonalban: az
rm -rf /var/www/regi oldalkét útvonalat kap, a/var/www/regimappát és az aktuális könyvtárban azoldalnevűt. A szóközt tartalmazó nevet tedd idézőjelbe:rm -rf "/var/www/regi oldal". - Üres változó egy szkriptben: ha a
$MAPPAüres, azrm -rf "$MAPPA"/*a gyökérkönyvtár tartalmát törölné. Szkriptben használd a${MAPPA:?}formát, amely üres változónál hibával leállítja a szkriptet (MAPPA: parameter null or not set):rm -rf "${MAPPA:?}"/*. - Rossz könyvtárban kiadott relatív útvonal: az
rm -rf *mindig az aktuális könyvtárban töröl. Előtte apwdmegmutatja, hol vagy, azlspedig, mi törlődne.
Magát a gyökérkönyvtárat a GNU rm alapból nem hajlandó rekurzívan törölni (rm: it is dangerous to operate recursively on '/'), de ez csak a / útvonalat védi, az alatta lévő mappákat nem.
Ha nem vagy biztos a dolgodban, törlés helyett először nevezd át vagy helyezd át a mappát (például mv regi-oldal regi-oldal.torolni), és csak néhány nap múlva töröld.
Permission denied
rm: cannot remove '/srv/vedett/x': Permission denied
Egy fájl törléséhez a fájlt tartalmazó mappára kell írási jog, a fájl saját jogosultsága ehhez nem számít. Ilyenkor az -f sem segít. Ha a fájl valóban törlendő, és rendszerfájlról vagy más felhasználó fájljáról van szó, sudo rm kell hozzá. A jogosultságok működését a chmod és chown parancsot bemutató cikk magyarázza el.
Furcsa nevű fájlok
Kötőjellel kezdődő nevet az rm kapcsolónak értelmez:
$ rm -x.txt
rm: invalid option -- 'x'
Try 'rm ./-x.txt' to remove the file '-x.txt'.
Két megoldás van: a név elé írt ./, vagy a --, amely után a parancs már semmit sem tekint kapcsolónak:
rm ./-x.txt
rm -- -x.txt
Szóközt vagy különleges karaktert tartalmazó nevet tegyél idézőjelbe (rm "szep fajl.txt"), vagy használd a Tab billentyűt, amely a nevet a szükséges escape karakterekkel egészíti ki.
Felszabadul-e a hely?
Ha egy nagy fájlt (például egy naplót) egy futó program még nyitva tart, a törlés után a hely nem szabadul fel, amíg a program le nem zárja. Ilyenkor a df továbbra is tele lemezt mutat. Hogyan találod meg az ilyen fájlokat, és hogyan üríts ki egy naplót törlés nélkül, azt a Betelt a lemez, de a du nem mutatja cikk mutatja be.
Biztonságos törlés: shred
A törölt fájl tartalma a lemezen addig olvasható maradhat, amíg felül nem íródik. A shred véletlen adatokkal felülírja a fájlt, mielőtt törli:
shred -u -v titkos.txt
A shred dokumentációja szerint ez naplózó (journaling) fájlrendszereken, SSD-n és virtuális gépeken nem garantálja, hogy minden példány felülíródik, mert a tárolórendszer az adatot máshová is írhatja. Bizalmas adatnál ezért a teljes lemez titkosítása megbízhatóbb megoldás.
Átnevezés és áthelyezés: mv
Linuxon nincs külön átnevező parancs: az átnevezés is az mv dolga.
mv regi-nev.txt uj-nev.txt # átnevezés
mv fajl.txt /var/www/html/ # áthelyezés másik mappába
mv fajl1.txt fajl2.txt mentes/ # több fájl egy mappába
mv regi-mappa uj-mappa # mappa átnevezése
Mappát is így nevezel át, -r kapcsoló nélkül.
Az mv alapból szó nélkül felülírja a célfájlt. Ha az uj-nev.txt már létezik, a tartalma elvész. Ezt kapcsolókkal előzheted meg:
-i: rákérdez a felülírásra (mv: overwrite 'b.txt'?);-n: soha nem ír felül létező fájlt;-b: felülírás előtt a régi célfájlt~végű néven megtartja (b.txt~);-v: kiírja, mit csinált (renamed 'a.txt' -> 'c.txt').
Ha a cél egy létező mappa, az mv a forrást beleteszi: a mv dir1 dir2 után a mappa a dir2/dir1 helyen lesz, nem dir2 néven. Egy nem üres mappát nem lehet egy ugyanolyan nevű, nem üres mappára áthelyezni (mv: cannot overwrite 'e/a': Directory not empty); két mappa tartalmának összefésüléséhez az rsync vagy a cp -a való.
Áthelyezés másik fájlrendszerre
Ugyanazon a fájlrendszeren belül az mv csak a nevet írja át: egy több gigabájtos mappa áthelyezése is azonnali, és a fájlok inode-ja sem változik. Ha a cél egy másik lemezen vagy partíción van (például egy külön csatolt lemezen, vagy Ubuntun a memóriában lévő /tmp mappában), az mv valójában lemásolja, majd törli a forrást:
$ mv -v /dev/shm/z.txt ~/proba/
copied '/dev/shm/z.txt' -> '/home/admin/proba/z.txt'
removed '/dev/shm/z.txt'
Ez nagy adatnál sokáig tart, és ha közben megszakad, a cél félkész lehet. Nagy mappáknál biztonságosabb előbb másolni (rsync -a vagy cp -a), ellenőrizni, és csak utána törölni a forrást. A másolás részleteit a fájlok másolásáról szóló cikk írja le.
Különbség a cp -a és az mv között
mv (azonos fájlrendszeren) |
cp -a |
|
|---|---|---|
| A forrás megmarad? | nem | igen |
| Sebesség | azonnali | a mérettől függ |
| Kell hozzá szabad hely? | nem | igen, a teljes méret |
| Jogok, tulajdonos, dátumok | változatlanok | megtartja (a tulajdonost csak rootként) |
| Szimbolikus linkek | változatlanok | linkként másolja |
A sima cp (az -a nélkül) a szimbolikus link helyett a cél tartalmát másolja, és a fájlok dátuma a másolás ideje lesz.
SELinux (AlmaLinux, Rocky Linux): az mv a fájl SELinux címkéjét is magával viszi, a cp viszont a célmappa címkéjét adja az új fájlnak. A teszten a home könyvtárból a webszerver mappájába áthelyezett fájl user_home_t címkét kapott, és az nginx 403-as hibát adott rá, a másolt fájl működött. Ilyenkor a sudo restorecon -v fajl helyreállítja a címkét; részletesen a SELinux Permission denied hibák javításáról szóló cikk írja le.
Sok fájl átnevezése egyszerre
Az mv egyszerre csak egy fájlt tud átnevezni. Több fájlhoz a rename parancsot vagy egy rövid bash ciklust használhatsz. A rename parancsnak két, teljesen eltérő változata van:
AlmaLinux, Rocky Linux: a util-linux rename
AlmaLinuxon a rename a util-linux része, és alapból telepítve van. Egyszerű szövegcserét végez: rename MIT MIRE FÁJLOK.
rename -n -v .jpeg .jpg *.jpeg # csak megmutatja, mi történne
rename -v .jpeg .jpg *.jpeg
`kep1.jpeg' -> `kep1.jpg'
`kep2.jpeg' -> `kep2.jpg'
A -n próbafuttatás: kiírja a változásokat, de nem nevez át semmit. Fájlonként csak az első előfordulást cseréli (aa-aa.txt helyett ba-aa.txt lesz); az összeset az -a kapcsolóval.
Ubuntu, Debian: a Perl rename
Ubuntun és Debianon a rename parancs a rename csomagban van (sudo apt install rename; az Ubuntu 26.04 cloud image-én nem volt telepítve). Ez a változat Perl reguláris kifejezést vár, ezért sokkal rugalmasabb:
# Próbafuttatás: szóköz helyett aláhúzás, .JPEG helyett .jpg
rename -n 's/ /_/; s/\.JPEG$/.jpg/' *
# Végrehajtás
rename -v 's/ /_/; s/\.JPEG$/.jpg/' *
# Minden szóköz cseréje (g = global)
rename 's/ /_/g' *
# Kisbetűsítés
rename 'y/A-Z/a-z/' *
Ha Ubuntun a util-linux formáját (rename .jpeg .jpg *.jpeg) adod meg, a Perl változat szintaktikai hibával leáll (syntax error at line 1), és nem nevez át semmit. A util-linux változat Ubuntun rename.ul néven érhető el. AlmaLinux 10 alatt a Perl változatot nem találtuk meg sem az alap tárolókban, sem az EPEL-ben.
Bash ciklus: mindenhol működik
Ha nem tudod, melyik rename van a gépen, egy bash ciklus bármelyik disztribúción működik:
# Kiterjesztés cseréje: .JPG -> .jpg
for f in *.JPG; do mv -v -- "$f" "${f%.JPG}.jpg"; done
# Kisbetűs fájlnevek
for f in *[A-Z]*; do mv -v -- "$f" "$(echo "$f" | tr 'A-Z' 'a-z')"; done
A "$f" idézőjelei miatt a szóközt tartalmazó nevekkel is működik, a -- pedig a kötőjellel kezdődő neveket védi. Élesben futtatás előtt az mv elé írt echo megmutatja, mit csinálna a ciklus.
Linkek: ln
A link egy fájlra vagy mappára mutató második név. Kétféle van.
Szimbolikus link (symlink): ln -s
A szimbolikus link egy kis fájl, amely egy útvonalat tárol. Mutathat mappára, másik fájlrendszeren lévő fájlra, és akár nem létező célra is.
ln -s CÉL LINKNEV
ln -s /var/www/pelda.hu/public_html ~/public_html
ln -s /etc/nginx/sites-available/pelda.hu /etc/nginx/sites-enabled/
Az ls -l a linket l betűvel és nyíllal mutatja (current -> releases/2026-11-01).
Relatív linknél a cél a link helyéhez képest értendő, nem ahhoz a mappához, ahol a parancsot kiadtad. Az ln -s releases/v1 a/rossz egy a/releases/v1 célra mutató, törött linket hoz létre; helyesen ln -s ../releases/v1 a/jo. Az ln -sr releases/v1 a/rel (relative) maga számolja ki a helyes relatív utat (a/rel -> ../releases/v1). Abszolút útvonallal (/-rel kezdve) ez a probléma nem fordul elő.
Link átirányítása: ln -sfn
Egy meglévő link átállítása más célra gyakori feladat, például telepítéskor (a current link az aktuális verzió mappájára mutat). Mappára mutató linknél a sima ln -sf nem azt csinálja, amit várnál: a régi link célmappájában egy új linket hoz létre, a current pedig változatlan marad. A -n kapcsoló kell hozzá, amely a meglévő linket nem követi, hanem lecseréli:
ln -sfn releases/2026-11-08 current
Hová mutat egy link?
readlink current # a tárolt útvonal: releases/2026-11-08
readlink -f current # a teljes, feloldott útvonal
ls -l current
A törött linkek (amelyek célja már nem létezik) a find paranccsal kereshetők meg:
find /var/www -xtype l
További keresési lehetőségeket a find parancs példáit bemutató cikk mutat be.
Link törlése a cél törlése nélkül
A link törlése a célt nem érinti:
rm current
unlink current
Ne írj perjelet a link neve után. A current/ már a célmappát jelenti, nem a linket. Az rm current/ hibát ad (Is a directory), az rm -r current/ viszont a teszten a célmappa teljes tartalmát törölte, csak magát a linket hagyta meg (rm: cannot remove 'current/': Not a directory). Az rm -rf current/ ugyanígy kiürítette a célmappát, és az -f miatt még hibaüzenetet sem írt ki. A Tab billentyű a teszten mindkét rendszeren perjelet tett a mappára mutató link neve után (ls current/), ezért törlés előtt mindig nézd meg a parancssort.
Hardlink: ln az -s kapcsoló nélkül
A -s nélküli ln hardlinket készít: ugyanannak a fájlnak egy második nevét, ugyanazzal az inode-dal.
ln eredeti.txt masodik.txt
ls -li eredeti.txt masodik.txt
A fájl tartalma addig marad meg, amíg legalább egy neve létezik: az eredeti.txt törlése után a masodik.txt ugyanúgy olvasható. Hardlink csak ugyanazon a fájlrendszeren belül készíthető, és mappára nem (ln: releases: hard link not allowed for directory). A gyakorlatban a szimbolikus link a gyakoribb; a hardlinkek lemezhasználatra gyakorolt hatását a du parancsról szóló cikk írja le.
Összefoglalás
| Feladat | Parancs |
|---|---|
| Fájl törlése | rm fajl |
| Üres mappa törlése | rmdir mappa |
| Mappa törlése tartalmával | rm -r mappa |
| Törlés megerősítéssel | rm -ri mappa vagy rm -rI mappa |
| Kötőjellel kezdődő fájl törlése | rm -- -fajl |
| Átnevezés | mv regi uj |
| Átnevezés felülírás nélkül | mv -n regi uj |
| Tömeges átnevezés (Ubuntu, Debian) | rename 's/regi/uj/' * |
| Tömeges átnevezés (AlmaLinux) | rename regi uj * |
| Szimbolikus link | ln -s cel link |
| Link átirányítása | ln -sfn ujcel link |
| Link célja | readlink -f link |
| Link törlése | rm link (perjel nélkül) |


