GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Liste von Verzeichnissen vom Unix-Suchbefehl ausschließen?

Ich muss eine Liste von Dateien erstellen, die in einem Verzeichnis vorhanden sind, aber auch eine Datei übergeben, die eine Liste von Verzeichnissen enthält, die ausgeschlossen werden sollen.

Ich habe den folgenden Vorschlag gesehen, aber ich hatte kein Glück damit, wenn es um das Typ-Flag geht:

find $dir_name $(printf "! -name %s " $(cat $exclude_file))

Gibt es eine Möglichkeit, dies zu tun, oder muss ich die gesamte Liste erstellen und sie dann durcharbeiten, um diejenigen zu entfernen, die teilweise mit denen im Ausschlussverzeichnis übereinstimmen.

Akzeptierte Antwort:

Da Ihre exclude_file enthält Pfade, keine Namen, Sie müssen -path verwenden seinen Einträgen entsprechen. Um die Unterverzeichnisse übereinstimmender Verzeichnisse auszuschließen, müssen Sie auch -prune ausführen Sie. Das sollte funktionieren:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print

Wenn Sie nur Dateien sehen möchten, können Sie nur Dateien drucken:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print

Linux
  1. Eine Anleitung zum Linux-Befehl „Suchen“.

  2. So schließen Sie ein Verzeichnis in find aus. Befehl

  3. Wie kann ich Verzeichnisse von grep -R ausschließen?

  4. Verwenden Sie den Befehl find, aber schließen Sie Dateien in zwei Verzeichnissen aus

  5. rekursives grep:Bestimmte Verzeichnisse ausschließen

Find-Befehl in Linux (Dateien und Verzeichnisse suchen)

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

So listen Sie nur Verzeichnisse in Linux auf

Finden Sie Befehl in Linux/UNIX

Suchbefehl von PID