V Linuxu datoteke in mape brišeš z ukazoma rm in rmdir, preimenuješ ali premikaš z ukazom mv, z ukazom ln pa nanje narediš povezavo. Ukazi so preprosti, imajo pa nekaj pasti: brisanja ni mogoče razveljaviti, mv brez besed prepiše ciljno datoteko, pri brisanju simbolne povezave pa lahko poševnica na napačnem mestu izprazni tudi cilj povezave.
Ukaze iz članka smo novembra 2026 preizkusili v sistemih AlmaLinux 10.2 in Ubuntu 26.04. Enako delujejo na lastnem KVM VPS in v vmesniku Terminal cPanela. Kratek pregled osnovnih ukazov daje članek o osnovnih ukazih Linux.
Brisanje datoteke: rm
rm fajl.txt
rm fajl1.txt fajl2.txt
rm *.log
V Linuxu ni koša: kar izbriše rm, takoj izgine in tega iz ukazne vrstice ni mogoče obnoviti. Pred pomembnimi datotekami naredi varnostno kopijo (glej: varnostno kopiranje in obnovitev podatkov v Linuxu).
Uporabna stikala:
-i: pred vsako datoteko vpraša (rm: remove regular file 'fajl.txt'?), odgovoryjo izbriše,npa obdrži;-I: vpraša le enkrat, če briše več kot tri datoteke ali mapo rekurzivno (rm: remove 4 arguments?); manj vprašanj, a pri napačno vtipkanem nadomestnem znaku te še ustavi;-v: izpiše, kaj je izbrisal (removed 'fajl.txt');-f: ne sprašuje in ne javlja napake za neobstoječe datoteke.
Če je datoteka zaščitena pred pisanjem (na primer chmod 444), rm v terminalu vpraša: rm: remove write-protected regular empty file 'vedett.txt'?. -f utiša tudi to vprašanje. Če ukaz vhoda ne dobi iz terminala (v skripti, opravilu cron), datoteko, zaščiteno pred pisanjem, izbriše brez vprašanja.
V AlmaLinuxu je v datoteki .bashrc uporabnika root privzeto vrstica alias rm='rm -i', zato po sudo -i rm vpraša za vsako datoteko. sudo rm pa vzdevka ne uporablja in ne sprašuje; v Ubuntu 26.04 tudi root nima takega vzdevka. O ustvarjanju lastnih vzdevkov govori članek o vzdevkih bash.
Brisanje mape skupaj z vsebino: rm -r
Prazno mapo izbriše rmdir. Če je v mapi kaj, vrne napako, tudi navaden rm mape ne izbriše:
$ rmdir regi-oldal
rmdir: failed to remove 'regi-oldal': Directory not empty
$ rm regi-oldal
rm: cannot remove 'regi-oldal': Is a directory
Mapo z vso vsebino izbriše stikalo -r (rekurzivno):
rm -r regi-oldal
rm -rv regi-oldal # izpiše, kaj je izbrisal
rm -rI regi-oldal # pred tem enkrat vpraša
Nevarnosti rm -rf
rm -rf brez vprašanja in z utišanjem napak izbriše vse, kar dobi. Večina težav ne nastane zaradi ukaza, temveč zaradi poti, ki jo dobi:
- Presledek v poti:
rm -rf /var/www/regi oldaldobi dve poti, mapo/var/www/regiin tisto z imenomoldalv trenutnem imeniku. Ime s presledkom postavi med narekovaje:rm -rf "/var/www/regi oldal". - Prazna spremenljivka v skripti: če je
$MAPAprazna, birm -rf "$MAPA"/*izbrisal vsebino korenskega imenika. V skripti uporabi obliko${MAPA:?}, ki pri prazni spremenljivki skripto ustavi z napako (MAPA: parameter null or not set):rm -rf "${MAPA:?}"/*. - Relativna pot v napačnem imeniku:
rm -rf *vedno briše v trenutnem imeniku. Pred tempwdpokaže, kje si,lspa, kaj bi se izbrisalo.
Samega korenskega imenika GNU rm privzeto noče rekurzivno izbrisati (rm: it is dangerous to operate recursively on '/'), vendar to ščiti le pot /, map pod njo pa ne.
Če nisi prepričan, mapo namesto brisanja najprej preimenuj ali premakni (na primer mv regi-oldal regi-oldal.torolni) in jo izbriši šele čez nekaj dni.
Permission denied
rm: cannot remove '/srv/vedett/x': Permission denied
Za brisanje datoteke je potrebna pravica pisanja v mapo, ki datoteko vsebuje, lastna dovoljenja datoteke pri tem niso pomembna. V tem primeru ne pomaga niti -f. Če je datoteko res treba izbrisati in gre za sistemsko datoteko ali datoteko drugega uporabnika, je potreben sudo rm. Delovanje dovoljenj pojasnjuje članek o ukazih chmod in chown.
Datoteke z nenavadnimi imeni
Ime, ki se začne z vezajem, rm razume kot stikalo:
$ rm -x.txt
rm: invalid option -- 'x'
Try 'rm ./-x.txt' to remove the file '-x.txt'.
Rešitvi sta dve: ./ pred imenom ali --, za katerim ukaz ničesar več ne šteje za stikalo:
rm ./-x.txt
rm -- -x.txt
Ime s presledkom ali posebnimi znaki postavi med narekovaje (rm "szep fajl.txt") ali uporabi tipko Tab, ki ime dopolni s potrebnimi ubežnimi znaki.
Se prostor sprosti?
Če veliko datoteko (na primer dnevnik) tekoči program še drži odprto, se prostor po izbrisu ne sprosti, dokler je program ne zapre. Takrat df še vedno kaže poln disk. Kako najdeš takšne datoteke in kako izprazniš dnevnik brez brisanja, pokaže članek Disk je poln, du pa tega ne pokaže.
Varno brisanje: shred
Vsebina izbrisane datoteke lahko ostane na disku berljiva, dokler ni prepisana. shred datoteko pred izbrisom prepiše z naključnimi podatki:
shred -u -v titkos.txt
Po dokumentaciji shred to na datotečnih sistemih z dnevnikom (journaling), SSD in navideznih računalnikih ne zagotavlja, da so prepisane vse kopije, ker lahko sistem shranjevanja podatke zapiše tudi drugam. Pri zaupnih podatkih je zato zanesljivejša rešitev šifriranje celotnega diska.
Preimenovanje in premikanje: mv
Linux nima posebnega ukaza za preimenovanje: tudi preimenovanje je naloga ukaza mv.
mv regi-nev.txt uj-nev.txt # preimenovanje
mv fajl.txt /var/www/html/ # premik v drugo mapo
mv fajl1.txt fajl2.txt mentes/ # več datotek v eno mapo
mv regi-mappa uj-mappa # preimenovanje mape
Tako preimenuješ tudi mapo, brez stikala -r.
mv privzeto brez besed prepiše ciljno datoteko. Če uj-nev.txt že obstaja, se njena vsebina izgubi. To preprečiš s stikali:
-i: vpraša za prepis (mv: overwrite 'b.txt'?);-n: nikoli ne prepiše obstoječe datoteke;-b: pred prepisom staro ciljno datoteko obdrži pod imenom s končnico~(b.txt~);-v: izpiše, kaj je naredil (renamed 'a.txt' -> 'c.txt').
Če je cilj obstoječa mapa, mv vir postavi vanjo: po mv dir1 dir2 bo mapa na mestu dir2/dir1, ne pod imenom dir2. Neprazne mape ni mogoče premakniti na neprazno mapo z istim imenom (mv: cannot overwrite 'e/a': Directory not empty); za združitev vsebine dveh map sta primerna rsync ali cp -a.
Premik na drug datotečni sistem
Znotraj istega datotečnega sistema mv le spremeni ime: tudi premik mape z več gigabajti je takojšen, inode datotek pa se ne spremeni. Če je cilj na drugem disku ali particiji (na primer na ločeno priklopljenem disku ali v Ubuntuju v mapi /tmp v pomnilniku), mv vir v resnici kopira in nato izbriše:
$ mv -v /dev/shm/z.txt ~/proba/
copied '/dev/shm/z.txt' -> '/home/admin/proba/z.txt'
removed '/dev/shm/z.txt'
Pri velikih podatkih to traja dolgo, in če se vmes prekine, je lahko cilj napol dokončan. Pri velikih mapah je varneje najprej kopirati (rsync -a ali cp -a), preveriti in šele nato izbrisati vir. Podrobnosti kopiranja opisuje članek o kopiranju datotek.
Razlika med cp -a in mv
mv (na istem datotečnem sistemu) |
cp -a |
|
|---|---|---|
| Ali vir ostane? | ne | da |
| Hitrost | takojšnja | odvisna od velikosti |
| Ali potrebuje prosti prostor? | ne | da, celotno velikost |
| Pravice, lastnik, datumi | nespremenjeni | ohrani (lastnika le kot root) |
| Simbolne povezave | nespremenjeni | kopira kot povezavo |
Navaden cp (brez -a) namesto simbolne povezave kopira vsebino cilja, datum datotek pa postane čas kopiranja.
SELinux (AlmaLinux, Rocky Linux): mv s seboj prenese tudi oznako SELinux datoteke, cp pa novi datoteki da oznako ciljne mape. V preizkusu je datoteka, premaknjena iz domačega imenika v mapo spletnega strežnika, dobila oznako user_home_t in nginx je zanjo vrnil napako 403, kopirana datoteka pa je delovala. Takrat sudo restorecon -v fajl obnovi oznako; podrobno to opisuje članek o odpravljanju napak SELinux Permission denied.
Preimenovanje veliko datotek hkrati
mv naenkrat lahko preimenuje le eno datoteko. Za več datotek lahko uporabiš ukaz rename ali kratko zanko bash. Ukaz rename ima dve povsem različni različici:
AlmaLinux, Rocky Linux: rename iz util-linux
V AlmaLinuxu je rename del util-linux in je privzeto nameščen. Izvaja preprosto zamenjavo besedila: rename KAJ S_ČIM DATOTEKE.
rename -n -v .jpeg .jpg *.jpeg # le pokaže, kaj bi se zgodilo
rename -v .jpeg .jpg *.jpeg
`kep1.jpeg' -> `kep1.jpg'
`kep2.jpeg' -> `kep2.jpg'
-n je poskusni zagon: izpiše spremembe, vendar ničesar ne preimenuje. Pri vsaki datoteki zamenja le prvo pojavitev (iz aa-aa.txt nastane ba-aa.txt); vse zamenja s stikalom -a.
Ubuntu, Debian: rename v Perlu
V Ubuntuju in Debianu je ukaz rename v paketu rename (sudo apt install rename; na cloud image Ubuntu 26.04 ni bil nameščen). Ta različica pričakuje regularni izraz Perl, zato je veliko prilagodljivejša:
# Poskusni zagon: podčrtaj namesto presledka, .jpg namesto .JPEG
rename -n 's/ /_/; s/\.JPEG$/.jpg/' *
# Izvedba
rename -v 's/ /_/; s/\.JPEG$/.jpg/' *
# Zamenjava vseh presledkov (g = global)
rename 's/ /_/g' *
# Pretvorba v male črke
rename 'y/A-Z/a-z/' *
Če v Ubuntuju navedeš obliko util-linux (rename .jpeg .jpg *.jpeg), se različica v Perlu ustavi s sintaktično napako (syntax error at line 1) in ničesar ne preimenuje. Različica util-linux je v Ubuntuju na voljo pod imenom rename.ul. V AlmaLinux 10 različice v Perlu nismo našli ne v osnovnih repozitorijih ne v EPEL.
Zanka bash: deluje povsod
Če ne veš, kateri rename je na računalniku, zanka bash deluje v kateri koli distribuciji:
# Zamenjava končnice: .JPG -> .jpg
for f in *.JPG; do mv -v -- "$f" "${f%.JPG}.jpg"; done
# Imena datotek z malimi črkami
for f in *[A-Z]*; do mv -v -- "$f" "$(echo "$f" | tr 'A-Z' 'a-z')"; done
Zaradi narekovajev "$f" deluje tudi z imeni s presledki, -- pa ščiti imena, ki se začnejo z vezajem. Pred pravim zagonom echo pred mv pokaže, kaj bi zanka naredila.
Povezave: ln
Povezava je drugo ime, ki kaže na datoteko ali mapo. Obstajata dve vrsti.
Simbolna povezava (symlink): ln -s
Simbolna povezava je majhna datoteka, ki hrani pot. Lahko kaže na mapo, na datoteko na drugem datotečnem sistemu in celo na neobstoječ cilj.
ln -s CILJ IMEPOVEZAVE
ln -s /var/www/pelda.hu/public_html ~/public_html
ln -s /etc/nginx/sites-available/pelda.hu /etc/nginx/sites-enabled/
ls -l povezavo prikaže s črko l in puščico (current -> releases/2026-11-01).
Pri relativni povezavi se cilj nanaša na mesto povezave, ne na mapo, v kateri si zagnal ukaz. ln -s releases/v1 a/rossz ustvari prekinjeno povezavo, ki kaže na cilj a/releases/v1; pravilno je ln -s ../releases/v1 a/jo. ln -sr releases/v1 a/rel (relative) pravo relativno pot izračuna sam (a/rel -> ../releases/v1). Z absolutno potjo (ki se začne z /) se ta težava ne pojavi.
Preusmeritev povezave: ln -sfn
Preusmeritev obstoječe povezave na drug cilj je pogosta naloga, na primer pri nameščanju (povezava current kaže na mapo trenutne različice). Pri povezavi na mapo navaden ln -sf ne naredi tega, kar bi pričakoval: v ciljni mapi stare povezave ustvari novo povezavo, current pa ostane nespremenjena. Potrebno je stikalo -n, ki obstoječi povezavi ne sledi, temveč jo zamenja:
ln -sfn releases/2026-11-08 current
Kam kaže povezava?
readlink current # shranjena pot: releases/2026-11-08
readlink -f current # celotna, razrešena pot
ls -l current
Prekinjene povezave (katerih cilj ne obstaja več) poiščeš z ukazom find:
find /var/www -xtype l
Druge možnosti iskanja predstavlja članek s primeri ukaza find.
Brisanje povezave brez brisanja cilja
Brisanje povezave ne vpliva na cilj:
rm current
unlink current
Za imenom povezave ne piši poševnice. current/ že pomeni ciljno mapo, ne povezave. rm current/ vrne napako (Is a directory), rm -r current/ pa je v preizkusu izbrisal celotno vsebino ciljne mape in pustil le samo povezavo (rm: cannot remove 'current/': Not a directory). rm -rf current/ je prav tako izpraznil ciljno mapo in zaradi -f ni izpisal niti sporočila o napaki. Tipka Tab je v preizkusu v obeh sistemih za ime povezave na mapo dodala poševnico (ls current/), zato pred brisanjem vedno preveri ukazno vrstico.
Trda povezava: ln brez stikala -s
ln brez -s naredi trdo povezavo: drugo ime iste datoteke, z istim inodom.
ln eredeti.txt masodik.txt
ls -li eredeti.txt masodik.txt
Vsebina datoteke ostane, dokler obstaja vsaj eno njeno ime: po izbrisu eredeti.txt je masodik.txt enako berljiva. Trdo povezavo je mogoče narediti le znotraj istega datotečnega sistema in ne na mapo (ln: releases: hard link not allowed for directory). V praksi je pogostejša simbolna povezava; vpliv trdih povezav na porabo diska opisuje članek o ukazu du.
Povzetek
| Naloga | Ukaz |
|---|---|
| Brisanje datoteke | rm fajl |
| Brisanje prazne mape | rmdir mappa |
| Brisanje mape z vsebino | rm -r mappa |
| Brisanje s potrditvijo | rm -ri mappa ali rm -rI mappa |
| Brisanje datoteke, ki se začne z vezajem | rm -- -fajl |
| Preimenovanje | mv regi uj |
| Preimenovanje brez prepisa | mv -n regi uj |
| Množično preimenovanje (Ubuntu, Debian) | rename 's/regi/uj/' * |
| Množično preimenovanje (AlmaLinux) | rename regi uj * |
| Simbolna povezava | ln -s cel link |
| Preusmeritev povezave | ln -sfn ujcel link |
| Cilj povezave | readlink -f link |
| Brisanje povezave | rm link (brez poševnice) |


