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

Finden Sie Dateien und drucken Sie nur ihre übergeordneten Verzeichnisse

Übersehe ich hier etwas. Sicherlich sind all diese Regex und/oder Schleifen nicht notwendig, ein Einzeiler wird die Arbeit erledigen. Auch "for foo in $()"-Lösungen schlagen fehl, wenn die Pfadnamen Leerzeichen enthalten.

Verwenden Sie einfach dirname zweimal mit xargs, um den übergeordneten Elternteil zu erhalten ...

# make test case
mkdir -p /nfs/office/hht/info
mkdir -p /nfs/office/wee1/info
touch /nfs/office/hht/info/.user.log
touch /nfs/office/wee1/info/.user.log

# parent's parent approach
cd /nfs//office/ && find . -name '.user.log' | xargs -I{} dirname {} | xargs -I{} dirname {}

# alternative, have find print parent directory, so dirname only needed once...
cd /nfs//office/ && find . -name ".user.log" -printf "%h\n"  | xargs -I{} dirname {}

Produziert

./hht
./wee1

Das geht ganz einfach mit den Formatierungsoptionen des -printf Aktion von find (siehe man find ).

cd /nfs//office/ && find . -name '.user.log' -printf "%h\n"
./hht/info
./wee1/info

Aus der Manpage:

%h\n gibt den Pfad für jede Datei in einer neuen Zeile aus.

Bitte beachten Sie, dass -printf ist nur GNU. Es funktioniert nicht unter macOS (einem BSD-System).


for file in $(find /nfs/office -name .user.log -print)
do
    parent=$(dirname $(dirname $file))
    echo $parent
done

EDIT:Tut mir leid, dass Sie das Großeltern-Verzeichnis haben möchten.


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

  2. Finden Sie Dateien und Verzeichnisse in Linux wie ein Profi

  3. Löschen Sie Dateien und Verzeichnisse anhand ihrer Namen. Keine solche Datei oder Ordner?

  4. Linux Dateien und Verzeichnisse löschen

  5. So finden und löschen Sie leere Verzeichnisse und Dateien in Unix

So finden Sie eine bestimmte Zeichenfolge oder ein bestimmtes Wort in Dateien und Verzeichnissen

Find-Befehl in Linux (Dateien und Verzeichnisse suchen)

Drag &Drop von Dateien und Ordnern im Terminal, um ihren absoluten Pfad zu drucken

3 Möglichkeiten, Dateien und Verzeichnisse in Linux zu finden

Finden Sie die größten Dateien und Verzeichnisse in Linux

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach