[solved] Nur kompletten Pfad ausgeben?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
outis
Beiträge: 395
Registriert: 07.10.2005 12:28:01

[solved] Nur kompletten Pfad ausgeben?

Beitrag von outis » 29.09.2020 08:15:05

Hallo,

gegeben ist eine Verzeichnisstruktur vergleichbar diesem Muster

/A/B
/A/B/C
/B/F/G/J

Lasse ich mir die mit find -type d ausgeben, bekomme ich dieses Ergebnis
/A
/A/B
/A/B/C

Im Prinzip völlig korrekt, da ja drei Verzeichnisse in der Reihe vorhanden sind. Ich möchte aber, dass nur die Zeile mit allen Verzeichnissen ausgegeben wird, nicht aber auch die vorherigen Verzeichnisse extra.

Wie lässt sich das in einem bash-script bewerkstelligen?

Edit: Präzisierung
Zuletzt geändert von outis am 29.09.2020 10:09:05, insgesamt 1-mal geändert.
LG

Jochen

Benutzeravatar
hikaru
Moderator
Beiträge: 13896
Registriert: 09.04.2008 12:48:59

Re: Nur den Namen des letzten Verzeichnisses ausgeben?

Beitrag von hikaru » 29.09.2020 08:30:40

Die find-Ausgabe legt nahe, dass J kein Verzeichnis, sondern wahrscheinlich eine reguläre Datei ist. Das widerspricht der Frage im Threadtitel.

Willst du J mit augegeben haben, dann sollte das funktionieren:

Code: Alles auswählen

find / | egrep -o '[^/]+$'
Möchtest du J nicht haben, dann musst du find anweisen, nur nach Verzeichnissen zu suchen, wie du es bereits getan hast.

outis
Beiträge: 395
Registriert: 07.10.2005 12:28:01

Re: Nur kompletten Pfad ausgeben?

Beitrag von outis » 29.09.2020 08:37:30

Sorry, ich habe mich ungenau ausgedrückt:

Das hier:
Lasse ich mir die mit find -type d ausgeben, bekomme ich dieses Ergebnis
/A
/A/B
/A/B/C
ist nur die find-Ausgabe für die zweite Zeile des Beitrags #1.

Für die Zeile mit J gäbe es ja von find:
/B
/B/F
/B/F/G
/B/F/G/J

Ich möchte aber im script nur die kompletten Pfade weiterverarbeiten, also die im ersten Beitrag als Beispiel genannten Zeilen.
LG

Jochen

outis
Beiträge: 395
Registriert: 07.10.2005 12:28:01

Re: Nur kompletten Pfad ausgeben?

Beitrag von outis » 29.09.2020 08:42:39

Vielleicht hilft noch ein Hinweis auf das Vorhaben:

Ich möchte den kompletten Verzeichnispfad haben, um den in eine Datenbank zu schreiben. Nur in dem jeweils untersten Verzeichnis sind Dateien, also z.B. in J. In den darüberliegenden Verzeichnissen B, F, G sind aber keine Dateien. Weswegen es unnötig ist, die alle einzeln in die Datenbank zu schreiben.
LG

Jochen

outis
Beiträge: 395
Registriert: 07.10.2005 12:28:01

Re: Nur kompletten Pfad ausgeben?

Beitrag von outis » 29.09.2020 09:00:16

Ah, das sieht gut aus:

Code: Alles auswählen

find -type d -links 2
LG

Jochen

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Nur kompletten Pfad ausgeben?

Beitrag von weedy » 06.10.2020 16:49:06

outis hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 08:37:30
Sorry, ich habe mich ungenau ausgedrückt:

Das hier:
Lasse ich mir die mit find -type d ausgeben, bekomme ich dieses Ergebnis
/A
/A/B
/A/B/C
ist nur die find-Ausgabe für die zweite Zeile des Beitrags #1.

Für die Zeile mit J gäbe es ja von find:
/B
/B/F
/B/F/G
/B/F/G/J

Ich möchte aber im script nur die kompletten Pfade weiterverarbeiten, also die im ersten Beitrag als Beispiel genannten Zeilen.
Für komplette Pfade gehst Du zuvor in das rootverzeichnis.

$ find /bin/ls /etc/apt-cacher-ng
/bin/ls
/etc/apt-cacher-ng
/etc/apt-cacher-ng/backends_ubuntu
/etc/apt-cacher-ng/zz_debconf.conf
/etc/apt-cacher-ng/backends_debvol
/etc/apt-cacher-ng/acng.conf
/etc/apt-cacher-ng/security.conf
/etc/apt-cacher-ng/backends_ubuntu.default
/etc/apt-cacher-ng/backends_debian.default
/etc/apt-cacher-ng/backends_gentoo.default
/etc/apt-cacher-ng/backends_debian

$ find /bin/ls /etc/apt-cacher-ng -type d
/etc/apt-cacher-ng

Gruß

Antworten