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

Alle Verzeichnisse auflisten, die keine Datei mit einem bestimmten Dateinamen enthalten?

Wie würde ich alle Verzeichnisse auflisten, die dies nicht tun Haben Sie eine Datei mit einem bestimmten Dateinamen darin? z.B. diesem Baum gegeben

/
  /a
     README
     file001
     file002
  /b
     README
     file001
  /c
     file003

Ich möchte die Verzeichnisse auflisten, die dies nicht tun haben eine Datei namens README , in diesem Fall wäre es das Verzeichnis /c . Wie würde ich das machen? Mir fällt keine Syntax ein, die z. find .

Akzeptierte Antwort:

Angenommen ein find Implementierung wie GNU find der einen {} akzeptiert eingebettet in ein Argument für -exec :

$ find . -type d ! -exec test -e '{}/README' ; -print

oder, ohne die problematische Einbettung:

$ find . -type d ! -exec sh -c 'test -e "$1"/README' sh {} ; -print

Beispiel

Hier haben die Verzeichnisse 1/1 bis 5/5 eine README, die anderen Verzeichnisse sind leer.

$ tree 
.
|-- 1
|   `-- 1
|       `-- README
|-- 10
|   `-- 10
|-- 2
|   `-- 2
|       `-- README
|-- 3
|   `-- 3
|       `-- README
|-- 4
|   `-- 4
|       `-- README
|-- 5
|   `-- 5
|       `-- README
|-- 6
|   `-- 6
|-- 7
|   `-- 7
|-- 8
|   `-- 8
`-- 9
    `-- 9

Wenn wir nun diese Version unseres find ausführen Befehl:

$ find . -type d ! -exec test -e '{}/README' ; -print
.
./10
./10/10
./7
./7/7
./9
./9/9
./6
./6/6
./5
./8
./8/8
./4
./1
./3
./2

Referenzen

  • Verzeichnisse in der Suche ausschließen, die keinen bestimmten Dateinamen enthalten?

Linux
  1. Löschen Sie Dateien, auf die für eine bestimmte Zeit unter Linux nicht zugegriffen wurde

  2. Auflisten aller E-Mail-Adressen in einer Datei mit grep

  3. Alle Dateien in einem Verzeichnis löschen, dessen Name nicht mit einer Zeile in einer Dateiliste übereinstimmt?

  4. Wie erstelle ich eine Datei mit einer bestimmten Größe in Linux?

  5. Wie kann man alle Prozesse mit einem bestimmten Teilnamen beenden?

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

Wie lösche ich eine Datei mit einem seltsamen Namen?

Verlauf einer Datei anzeigen (Liste der Benutzer, die eine Datei geändert haben)

So erfassen Sie alle Festplatten, die kein Dateisystem haben

Löschen Sie alle Ordner innerhalb eines Ordners außer einem mit einem bestimmten Namen

Linux-mv-Datei mit langem Namen