Linux-Befehl find: die Optionen -name, -type, -size, -mtime und -delete

TestumgebungRHEL-FamilieAlmaLinux 9.8findutils 4.8root-KontoDebian 12 · findutils 4.9 normales KontoGeprüft am 2026-10-31

Der Linux-Befehl find geht von einem Startordner aus nach unten durch und findet Dateien und Ordner, die Bedingungen wie Name, Typ, Größe, Änderungszeit und Rechte erfüllen. Als wir in einem Testordner auf einem AlmaLinux-9-Server zehn Dateien angelegt und ihn mit jeweils einer geänderten Bedingung ausgeführt haben, übergaben wir die gefundenen Dateien am Ende mit -exec an andere Befehle und prüften beim Löschen vor -delete zuerst die Liste mit denselben Bedingungen.

Die Pfade des Testordners und die Dateizeiten in den Ergebnisfeldern wurden durch Beispielwerte ersetzt. Bei der Ausgabe des Debian-12-Servers ist nur der Pfad des Home-Ordners ein Beispielwert, der Rest ist unverändert.

1️⃣ Verwendung des Linux-Befehls find

  • ↪️ Startpfad, -name und -iname

Die Grundform ist [find Startpfad Bedingungen]. Lässt du den Startpfad weg, sucht find im aktuellen Ordner (.), und ohne Bedingungen gibt es alle Dateien und Ordner unter dem Startpfad aus.

Getestet haben wir in /root/work mit drei Ordnern und zehn Dateien wie unten.

/root/work
docs/
readme.txt450 Byte · vor 3 Tagen
guide.txt5,000 Byte
old.tmp64 Byte · vor 10 Tagen
logs/
app.log2MB
cache.tmp512 Byte · vor 10 Tagen
backup/Leerer Ordner
report.txt1,200 Byte
README.md300 Byte · vor 3 Tagen
run.sh18 Byte · Rechte 755
my notes.txt150 Byte · vor 3 Tagen · Rechte 600
empty.txt0 Byte
find /root/work
/root/work
/root/work/docs
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/backup
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

find sortiert Ergebnisse nicht nach Namen. In diesem Lauf gab es beim Ordner docs zuerst alle Dateien darin aus und ging dann zu logs weiter.

Reihst du mehrere Bedingungen aneinander, bleiben nur Dateien übrig, die alle erfüllen.

-name vergleicht nur den Dateinamen mit dem Muster, nicht den Pfad. Setze das Muster in einfache Anführungszeichen, damit die Shell * nicht zuerst expandiert, sondern unverändert an find übergibt.

find /root/work -name '*.txt'
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt

-name unterscheidet Groß- und Kleinschreibung. Die Suche nach Namen, die mit readme beginnen, fand nur docs/readme.txt, mit -iname kam auch README.md dazu.

find /root/work -name 'readme*'
/root/work/docs/readme.txt
find /root/work -iname 'readme*'
/root/work/docs/readme.txt
/root/work/README.md

find gehört zum Paket findutils. Die in der ersten Zeile von [find --version] geprüfte Version war auf dem AlmaLinux-9.8-Server findutils 4.8 und auf dem Debian-12-Server 4.9.

2️⃣ find -type d und -maxdepth

  • ↪️ Dateien oder Ordner auswählen und Suchtiefe

-type f behält nur reguläre Dateien, -type d nur Ordner.

find /root/work -type d
/root/work
/root/work/docs
/root/work/logs
/root/work/backup

Der Startpfad /root/work ist auch ein Ordner und erschien deshalb in der ersten Zeile. Mit -type f auf demselben Pfad erschienen alle zehn Dateien.

-maxdepth legt fest, wie viele Ebenen unter den Startpfad find geht. Mit -maxdepth 1 fielen die Dateien in docs und logs weg, und nur die fünf Dateien direkt unter /root/work blieben.

find /root/work -maxdepth 1 -type f
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

Umgekehrt übersprang -mindepth 2 alles direkt unter dem Startpfad und gab nur die fünf Dateien in Unterordnern aus.

find /root/work -mindepth 2 -type f
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

Die man-Seite empfiehlt, globale Optionen wie -maxdepth direkt hinter den Startpfad zu schreiben. Auch mit -maxdepth 1 hinter -type f blieb das Ergebnis bei denselben fünf Dateien, im Terminal erscheint aber eine Warnzeile, die globalen Optionen nach vorn zu setzen (laut man-Seite).

Um nur zu prüfen, wie viele Ordner oder Dateien es gibt, leitest du die Ausgabe an wc -l weiter. Das Zählen der -type-d-Ausgabe ergab 4, einschließlich des Startpfads.

find /root/work -type d | wc -l
4

Auch mit -maxdepth 1 ergab sich 4, weil alle drei Unterordner direkt unter dem Startpfad liegen.

find /root/work -maxdepth 1 -type d | wc -l
4

Das Zählen nur der Dateien in Unterordnern mit -mindepth 2 ergab 5.

find /root/work -mindepth 2 -type f | wc -l
5

3️⃣ Größen- und Zeitbedingungen des find-Befehls

  • ↪️ -size, -mtime, -mmin, -newer, -empty

Ein + vor der Zahl bedeutet größer als dieser Wert, ein - kleiner, und ohne Vorzeichen genau dieser Wert. Die Einheiten von -size stehen in der Tabelle unten (laut man-Seite).

EinheitGrößeJa
c1 Byte-size +500c
k1,024 Byte-size +1k
M1,048,576 Byte-size +1M
G1,073,741,824 Byte-size +1G
(keine)512-Byte-Blöcke-size +2
find /root/work -type f -size +1k
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt

Größer als 1k waren guide.txt mit 5,000 Byte, app.log mit 2MB und report.txt mit 1,200 Byte.

find /root/work -size +1M
/root/work/logs/app.log

Mit zweimal -size als Bereich blieben nur die zwei Dateien größer als 1k und kleiner als 100k übrig.

find /root/work -type f -size +1k -size -100k
/root/work/docs/guide.txt
/root/work/report.txt

-size teilt die Größe durch die Einheit und rundet vor dem Vergleich auf. Deshalb zählt auch README.md mit 300 Byte als 1k, und bei -size -1k erschien nur empty.txt mit Größe 0.

find /root/work -type f -size -1k
/root/work/empty.txt

Für die Zeitbedingungen haben wir die Änderungszeit von README.md, my notes.txt und docs/readme.txt auf vor 3 Tagen und die der zwei .tmp-Dateien auf vor 10 Tagen gesetzt. Jede Datei hat drei Zeiten, Zugriff, Änderung und Statusänderung, die du prüfen kannst mit dem stat-Befehl.

-mtime zählt die Zeit seit der letzten Änderung in 24-Stunden-Einheiten. Bei -mtime -1 erschienen die fünf innerhalb von 24 Stunden erstellten Dateien.

find /root/work -type f -mtime -1
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

Bei -mtime +7 erschienen nur die zwei auf vor 10 Tagen gesetzten .tmp-Dateien. Diese Form nutzt du, um vor dem Löschen alter Logs oder temporärer Dateien die Liste zu prüfen.

find /root/work -type f -mtime +7
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-mmin rechnet genauso in Minuten. -mmin -60 ergab dieselben fünf Dateien wie -mtime -1.

find /root/work -type f -mmin -60
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-newer findet Dateien, die später als eine Referenzdatei geändert wurden. Mit README.md, auf vor 3 Tagen gesetzt, als Referenz erschienen die fünf danach erstellten Dateien.

find /root/work -type f -newer /root/work/README.md
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-empty findet Dateien mit Größe 0 und leere Ordner zugleich, und es erschienen der leere Ordner backup und empty.txt.

find /root/work -empty
/root/work/backup
/root/work/empty.txt

4️⃣ find-Bedingungen -perm und -user

  • ↪️ Suche nach Rechten und Besitzer, Bedingungen gruppieren

Steht nach -perm nur eine Zahl, findet es Dateien mit genau diesen Rechten. Mit -perm 644 fielen run.sh mit 755 und my notes.txt mit 600 weg, und acht Dateien erschienen.

find /root/work -type f -perm 644
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/report.txt
/root/work/README.md
/root/work/empty.txt

Ein - vor dem Modus findet Dateien, die alle angegebenen Rechte haben. Das Ausführungsrecht des Besitzers (u+x) hatte nur run.sh.

find /root/work -type f -perm -u+x
/root/work/run.sh

Ein / vor dem Modus reicht, wenn eines der angegebenen Rechte vorhanden ist. 6000 ist die Summe aus SUID (4000) und SGID (2000). Diese Form nutzt du, um auf dem Server Dateien zu prüfen, die beim Ausführen mit den Rechten von Besitzer oder Gruppe laufen.

Im Testordner gab es keine solche Datei. Nachdem wir run.sh SUID gegeben hatten, erschien run.sh.

chmod u+s /root/work/run.sh
find /root/work -type f -perm /6000
/root/work/run.sh

In älteren Quellen steht an dieser Stelle -perm +6000. Unverändert ausgeführt endete das mit dem Fehler [invalid mode].

find /root/work -type f -perm +6000
find: invalid mode '+6000'

Die +-Form wurde in findutils 4.5.12 entfernt (laut man-Seite), schreibe also /. Das für den Test gesetzte SUID haben wir mit chmod u-s entfernt.

-user filtert nach Besitzernamen. Alle Testdateien gehören root, also filtert -user root allein nichts heraus. Zusammen mit -name für .log-Dateien blieb nur app.log.

find /root/work -type f -user root -name '*.log'
/root/work/logs/app.log

-nouser findet Dateien, deren Besitzer-UID zu keinem Konto gehört. Das nutzt du, um nach dem Löschen eines Kontos übrig gebliebene Dateien zu prüfen. Nachdem wir den Besitzer von guide.txt auf die nicht vorhandene UID 1500 gesetzt hatten, erschien guide.txt.

chown 1500:1500 /root/work/docs/guide.txt
find /root/work -nouser
/root/work/docs/guide.txt

-nogroup prüft dasselbe für die Besitzergruppe, und guide.txt mit ebenfalls auf 1500 geänderter Gruppe erschien. Nach dem Test haben wir das mit chown root:root zurückgesetzt.

Mit -o zwischen Bedingungen reicht eine davon. Zusammen mit einer anderen Bedingung wie -type f fasst du die mit -o verbundenen Bedingungen in Klammern. Vor die Klammern kommt ein Backslash, damit die Shell sie nicht zuerst auswertet, und zwischen Klammern und Bedingungen steht ein Leerzeichen.

find /root/work -type f \( -name '*.log' -o -name '*.tmp' \)
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

! kehrt die direkt folgende Bedingung um. Die Suche nach Dateien, die nicht auf .txt enden, fand fünf.

find /root/work -type f ! -name '*.txt'
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/README.md
/root/work/run.sh

5️⃣ find -exec nutzen

  • ↪️ Unterschied zwischen {} \; und {} +, Rechte gesammelt ändern, Kombination mit grep

-exec führt den dahinter stehenden Befehl für jede gefundene Datei aus, an die Stelle von {} kommt der gefundene Pfad. Das ; am Befehlsende schreibst du als \;, damit die Shell es nicht zuerst als Befehlstrenner liest.

find /root/work -name '*.log' -exec ls -l {} \;
-rw-r--r-- 1 root root 2097152 Oct  5 14:10 /root/work/logs/app.log

Beendest du mit + statt \;, werden die gefundenen Pfade gesammelt und der Befehl läuft nur einmal. Im Vergleich mit echo gab \; die fünf Pfade in fünf Zeilen aus, + in einer.

find /root/work -name '*.txt' -exec echo {} \;
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt
find /root/work -name '*.txt' -exec echo {} +
/root/work/docs/readme.txt /root/work/docs/guide.txt /root/work/report.txt /root/work/my notes.txt /root/work/empty.txt

Befehle wie ls, die mehrere Pfade annehmen, fasst du mit + zusammen und sparst Aufrufe. Die Größe der drei Dateien über 1k haben wir mit einem einzigen ls -lh geprüft.

find /root/work -type f -size +1k -exec ls -lh {} +
-rw-r--r-- 1 root root 4.9K Oct  5 14:10 /root/work/docs/guide.txt
-rw-r--r-- 1 root root 2.0M Oct  5 14:10 /root/work/logs/app.log
-rw-r--r-- 1 root root 1.2K Oct  5 14:10 /root/work/report.txt

Auch zum gesammelten Setzen der Rechte eines Webordners auf 644 für Dateien und 755 für Ordner nutzt du -exec. Vorher haben wir Dateien mit abweichenden Werten gesucht, und run.sh und my notes.txt erschienen.

find /root/work -type f ! -perm 644
/root/work/run.sh
/root/work/my notes.txt

Dateien und Ordner haben unterschiedliche Rechte, also läuft es getrennt mit -type f und -type d. Auch chmod nimmt mehrere Pfade an, daher haben wir mit + beendet.

find /root/work -type f -exec chmod 644 {} +
find /root/work -type d -exec chmod 755 {} +

Die erneute Suche mit derselben Bedingung fand nichts, und der vorher auf 700 gesetzte Ordner backup hatte nun ebenfalls 755.

Allerdings hatte auch run.sh nun 644, und beim Ausführen kam [Permission denied]. In Ordnern mit ausführbaren Dateien gibst du diesen das Ausführungsrecht mit chmod +x zurück.

Um nur Dateien in Unterordnern zu ändern, fügst du -mindepth 2 hinzu. Mit 660 änderten sich nur die fünf Dateien in docs und logs, nach der Prüfung haben wir sie auf 644 zurückgesetzt.

find /root/work -mindepth 2 -type f -exec chmod 660 {} +
find /root/work -type f -perm 660
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

Verbindest du find und grep, suchst du nach Dateiinhalt statt nach Namen. Um eine Webshell-Prüfung nachzustellen, haben wir im eigenen Ordner /root/site vier PHP-Dateien angelegt und in html-cache.php und photo.php im Ordner upload die Zeichenkette [base64_decode] eingefügt.

find /root/site -type f
/root/site/lib/func.php
/root/site/upload/html-cache.php
/root/site/upload/photo.php
/root/site/index.php

Kennst du den Namen der Webshell, suchst du mit -name. Mit -maxdepth 2, um nur bis zum Upload-Ordner zu gehen, erschien html-cache.php allein.

find /root/site -maxdepth 2 -type f -name 'html*.php'
/root/site/upload/html-cache.php

Das unauffällig benannte photo.php erschien hier nicht. grep -l über -exec gibt nur die Pfade von Dateien mit der Zeichenkette aus, und beide Dateien erschienen.

find /root/site -name '*.php' -exec grep -l 'base64_decode' {} +
/root/site/upload/html-cache.php
/root/site/upload/photo.php

[base64_decode] ist eine Funktion, die auch in WordPress-Core-Dateien vorkommt. Öffne gefundene Dateien daher und prüfe den Inhalt, bevor du sie löschst.

-print0 setzt zwischen Pfade ein Nullzeichen statt eines Zeilenumbruchs. Das Nullzeichen ist auf dem Bildschirm unsichtbar, daher erschienen die Pfade zusammenhängend in einer Zeile.

find /root/work -name '*.txt' -print0
/root/work/docs/readme.txt/root/work/docs/guide.txt/root/work/report.txt/root/work/my notes.txt/root/work/empty.txt

Um auch Namen mit Leerzeichen wie my notes.txt ungetrennt an andere Befehle zu übergeben, kombinierst du die -print0-Ausgabe mit xargs -0 (laut man-Seite).

6️⃣ Dateien mit find löschen und Optionen

  • ↪️ -delete und -exec rm

Führe vor dem Löschen zuerst dieselben Bedingungen ohne Löschen aus und prüfe die Liste der zu löschenden Dateien mit eigenen Augen.

find /root/work -name '*.tmp'
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-exec rm {} \; führt rm für jede gefundene Datei aus. Nur im Ordner logs ausgeführt wurde cache.tmp gelöscht, und nur app.log blieb.

find /root/work/logs -name '*.tmp' -exec rm {} \;
ls /root/work/logs
app.log

-delete lässt find direkt löschen, ohne rm aufzurufen. Es gab beim Ausführen nichts aus, und die erneute Suche mit derselben Bedingung fand keine .tmp-Dateien mehr.

find /root/work -name '*.tmp' -delete
find /root/work -name '*.tmp'

-delete muss immer hinter den Bedingungen stehen. find wertet die Befehlszeile von vorn als einen Ausdruck aus. Steht -delete ganz vorn, versucht es also alles unter dem Startpfad zu löschen, bevor es Bedingungen ansieht (laut man-Seite).

🔲 Optionen des find-Befehls

📌 Wichtige Optionen: Ergebnisse aus diesem Artikel

OptionWas es tutErgebnis in diesem Artikel
-nameFindet Namen, die zum Muster passen (mit Groß-/Kleinschreibung)'*.txt' ergibt fünf Dateien, 'readme*' nur docs/readme.txt
-inameVergleicht Namen ohne Groß-/Kleinschreibung'readme*' ergibt docs/readme.txt und README.md
-type f, -type dBehält nur reguläre Dateien (f) oder Ordner (d)-type d ergibt vier Ordner samt Startpfad, -type f zehn Dateien
-maxdepthGeht nur N Ebenen unter den Startpfad-maxdepth 1 lässt nur die fünf Dateien direkt unter /root/work
-mindepthÜberspringt Ebenen oberhalb von N unter dem Startpfad-mindepth 2 ergibt nur die fünf Dateien in Unterordnern
-sizeSucht nach Größe (+ größer, - kleiner, Einheiten c, k, M, G)-size +1k ergibt drei Dateien, -size -1k nur empty.txt
-mtimeVergleicht die Zeit seit der Inhaltsänderung in 24-Stunden-Einheiten-mtime -1 ergibt fünf Dateien, -mtime +7 zwei .tmp-Dateien
-mminVergleicht die Zeit seit der Änderung in Minuten-mmin -60 ergibt dieselben fünf Dateien wie -mtime -1
-ctimeVergleicht in 24-Stunden-Einheiten bis zur Änderung von Dateiinfos wie Rechten und Name-ctime -1 ergibt alle zehn Testdateien
-newerFindet, was später als eine Referenzdatei geändert wurdeMit README.md, auf vor 3 Tagen gesetzt, als Referenz fünf Dateien
-emptyFindet Dateien mit Größe 0 und leere OrdnerErgibt den leeren Ordner backup und empty.txt
-permSucht nach Rechten (nur Zahl: genau dieser Wert, - davor: alle angegebenen, / davor: mindestens eines)-perm 644 ergibt acht Dateien, -perm -u+x run.sh, nach gesetztem SUID ergibt -perm /6000 run.sh
-userFiltert nach BesitzernamenMit -name '*.log' ergibt es app.log, ein nicht vorhandenes Konto endet mit Fehler
-nouserFindet, was eine Besitzer-UID ohne Konto hatErgibt guide.txt mit auf 1500 geänderter UID
-nogroupFindet, was eine Gruppen-GID ohne Gruppe hatErgibt guide.txt mit auf 1500 geänderter GID
-oBehält, was eine von beiden erfüllt (mit anderen Bedingungen in Klammern).log und .tmp zusammengefasst ergeben drei Dateien
!Kehrt die direkt folgende Bedingung umErgibt fünf Dateien, die nicht auf .txt enden
-execFührt den dahinter stehenden Befehl für jede gefundene Datei aus (Pfad bei {})Mit + am Ende gibt ein einziges echo fünf Pfade in einer Zeile aus
-print0Setzt zwischen Pfade ein Nullzeichen statt eines ZeilenumbruchsDas Nullzeichen ist unsichtbar, die Pfade hängen in einer Zeile zusammen
-deletefind löscht gefundene Dateien direkt (hinter den Bedingungen)Keine Ausgabe, erneute Suche fand keine .tmp-Dateien

📎 Weitere Optionen: laut offiziellem Handbuch

OptionWas es tut
-LFolgt symbolischen Links und nutzt die Infos der Zieldatei
-pathVergleicht statt des Namens den ganzen Pfad mit einem Shell-Muster
-regexVergleicht den ganzen Pfad mit einem regulären Ausdruck
-iregexVergleicht wie -regex, ohne Groß-/Kleinschreibung
-atimeVergleicht die Zeit seit dem letzten Zugriff in 24-Stunden-Einheiten
-cnewerFindet, dessen Status sich später als die Änderungszeit der Referenzdatei geändert hat
-groupFiltert nach Namen der Besitzergruppe
-xdevGeht nicht in Ordner anderer Dateisysteme
-daystartRechnet Zeitbedingungen ab 0 Uhr heute statt ab vor 24 Stunden
-pruneGeht bei einem Ordner nicht tiefer hinein
-quitBeendet sofort (-print -quit gibt nur das erste Ergebnis aus)
-printfGibt in einem selbst festgelegten Format aus
-lsGibt gefundene Dateien im ls -dils-Format aus
-fprintSpeichert gefundene Pfade statt auf dem Bildschirm in einer angegebenen Datei
-okWie -exec, fragt aber vorher nach
-execdirWie -exec, führt den Befehl aber im Ordner der gefundenen Datei aus

🔲 find-Befehl-Simulator

Der Simulator unten ist ein virtueller Server mit demselben Testordner, auf dem du Bedingungen wie -name, -type, -size, -mtime und -perm sowie -exec und -delete selbst ausführen kannst.

find-Befehl-Simulatorfindutils 4.8
[root@server work]#
Dieser virtuelle Server läuft nur im Browser, und in der linken Spalte stehen Größe, Änderungszeit und Rechte jeder Datei in /root/work. Mit -delete oder -exec rm gelöschte Dateien stellst du mit [Von vorn] wieder her.

7️⃣ Fehler des find-Befehls

  • ↪️ paths must precede expression und Permission denied

Schreibst du ein Muster ohne Anführungszeichen, wendet die Shell die Regeln für Platzhalter an und expandiert es zuerst zu Dateinamen im aktuellen Ordner. Als wir in den Ordner docs gewechselt sind und *.txt ohne Anführungszeichen geschrieben haben, übergab die Shell die zwei Namen guide.txt und readme.txt, und es kam der Fehler unten.

cd /root/work/docs
find /root/work -name *.txt
find: paths must precede expression: `readme.txt'
find: possible unquoted pattern after predicate `-name'?

Der Exit-Code war 1.

Ohne \; oder + am Ende von -exec kam [missing argument to `-exec’].

find /root/work -name '*.log' -exec ls -l {}
find: missing argument to `-exec'

Ein nicht vorhandener Startpfad ergibt [No such file or directory] und endet mit Exit-Code 1.

find /nonexistent-dir -name x
find: '/nonexistent-dir': No such file or directory

Auch ein nicht vorhandener Kontoname bei -user oder bei -type ein anderer Wert als die festgelegten Buchstaben wie f und d beendet find sofort mit einem Fehler, ohne die Suche zu starten.

find /root/work -user nosuchuser
find: 'nosuchuser' is not the name of a known user
find /root/work -type x
find: Unknown argument to -type: x

Mit einem normalen Konto auf dem Debian-12-Server haben wir die Rechte des Ordners lock im Testordner auf 000 gesetzt und dann den Testordner durchsucht. lock war nicht lesbar, es kam [Permission denied], und der Exit-Code war 1.

find ~/findtest
/home/user/findtest
/home/user/findtest/report.txt
/home/user/findtest/lock
find: '/home/user/findtest/lock': Permission denied
/home/user/findtest/docs
/home/user/findtest/docs/readme.txt

Um nur die Fehlerzeilen auszublenden, hängst du 2>/dev/null an. Die Fehlermeldung verschwand, der Exit-Code blieb aber 1.

find ~/findtest -name '*.txt' 2>/dev/null
/home/user/findtest/report.txt
/home/user/findtest/docs/readme.txt

🔢 FAQ & empfohlene Inhalte

find geht bei jedem Aufruf direkt unter dem Startpfad durch. locate sucht Namen in einer zuvor von updatedb erstellten Datenbank, daher erscheinen Dateien nicht, die nach der letzten Aktualisierung der Datenbank entstanden sind (laut man-Seite).

-mtime sieht auf die Änderung des Inhalts, -ctime auch auf die Änderung von Dateiinfos wie Rechten und Name. Auch bei README.md, dessen Änderungszeit mit touch -d auf vor 3 Tagen gesetzt wurde, bleibt das Ändern der Zeit als Infoänderung, daher zeigte -ctime -1 alle zehn Testdateien.

ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 2   +   4   =