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

Vergleichen Sie alle Dateien unter allen verschachtelten Verzeichnissen mit Shell-Globing

Speziell zu git (gitignore, gitattributes und Befehle, die Dateinamen annehmen):Wenn das Muster keinen Schrägstrich enthält, * Wildcards passen tief. Wenn es einen Schrägstrich enthält, ruft git fnmatch mit dem FNM_PATHNAME auf -Flag, und einfache Platzhalter passen nicht zu Schrägstrichen. ** to match deep wird nicht unterstützt. Vielleicht könnte diese Art von Deep-Matching mit einem neuen FNM_STARSTAR breiter unterstützt werden Flag und eine Implementierung in glibc, gnulib und anderen Stellen.


Wenn Sie alle von find zurückgegebenen Dateien bearbeiten möchten, anstatt sie nur aufzulisten, können Sie sie an xargs:

weiterleiten
find <directory> -type f | xargs ls

Dies gilt jedoch nur für Befehle, die kein rekursives Flag haben.


In Bash 4 mit shopt -s globstar , und zsh können Sie **/* verwenden die alles außer versteckten Dateien enthält. Sie können shopt -s dotglob tun in Bash 4 oder setopt dotglob in zsh, damit versteckte Dateien eingeschlossen werden.

In ksh set -o globstar ermöglicht es. Ich glaube nicht, dass es eine Möglichkeit gibt, Punktdateien implizit einzuschließen, aber ich denke **/{.[^.],}* funktioniert.


Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. Linux-Grundlagen:So laden Sie Dateien auf der Shell mit Wget herunter

  3. So komprimieren Sie Dateien und Verzeichnisse unter Linux (mit Beispielen)

  4. So erstellen Sie schnell Dateien in verschachtelten Verzeichnissen unter Linux

  5. Alle Dateien/Verzeichnisse außer einer Datei entfernen?

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

Linux-Dateien und -Verzeichnisse mit rsync synchron halten

So führen Sie eine Grep-Suche für alle Dateien und in allen Verzeichnissen durch

Alle Grafikdateien mit find auflisten?

Verzeichnisse mit allen Dateien finden, die älter als X sind?