Verzeichnisse mit fehlenden Dateien finden
Hallo, ich habe ein Verzeichnis mit einigen hundert unterschiedlich tief gestaffelten Unterverzeichnissen, die ich nach nicht vorhandenen Dateien durchsuchen möchte. Konkret möchte ich mir anzeigen lassen, in welchen Verzeichnissen weder otf-Dateien noch pfb-Dateien noch ttf-Dateien liegen. Irgendwie müsste das mit find gehen, aber wie? Mit find . -type f -name "*.[opt][ft][fb]" > ausgabe1 und find . -type f -name "*" > ausgabe2 die Inhalte der Verzeichnisse ausgeben lassen und dann mit xxdiff vergleichen ist bei über 60.000 Zeilen doch etwas sehr mühselig. Für Lösungsvorschläge wäre ich deshalb sehr dankbar. (Bitte keine KDE-basierten Lösungen, denn nur dafür KDE zu installieren wäre noch mühseliger.) Beste Grüße Heinz -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Bücher abseits des Mainstreams www.buchentdeckungen.de Barrierefreies Webdesign www.Pahlke-KunstWebDesign.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Sun, 22 Jun 2014 17:16:59 +0200
schrieb "Heinz W. Pahlke"
Hallo,
ich habe ein Verzeichnis mit einigen hundert unterschiedlich tief gestaffelten Unterverzeichnissen, die ich nach nicht vorhandenen Dateien durchsuchen möchte.
Konkret möchte ich mir anzeigen lassen, in welchen Verzeichnissen weder otf-Dateien noch pfb-Dateien noch ttf-Dateien liegen.
Irgendwie müsste das mit find gehen, aber wie? Mit
find . -type f -name "*.[opt][ft][fb]" > ausgabe1
und
find . -type f -name "*" > ausgabe2
die Inhalte der Verzeichnisse ausgeben lassen und dann mit xxdiff vergleichen ist bei über 60.000 Zeilen doch etwas sehr mühselig.
Für Lösungsvorschläge wäre ich deshalb sehr dankbar. (Bitte keine KDE-basierten Lösungen, denn nur dafür KDE zu installieren wäre noch mühseliger.)
Die Experten können das bestimmt besser, aber etwas wie find . | egrep -iv -e "*.opt|*.ft|*.fb"|while read found;do dirname "$found";done scheint zumindest auf den ersten Blick zu funktionieren. Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 2014-06-22 17:16, schrieb Heinz W. Pahlke:
ich habe ein Verzeichnis mit einigen hundert unterschiedlich tief gestaffelten Unterverzeichnissen, die ich nach nicht vorhandenen Dateien durchsuchen möchte.
Konkret möchte ich mir anzeigen lassen, in welchen Verzeichnissen weder otf-Dateien noch pfb-Dateien noch ttf-Dateien liegen.
Irgendwie müsste das mit find gehen, aber wie? Mit
find . -type f -name "*.[opt][ft][fb]" > ausgabe1
und
find . -type f -name "*" > ausgabe2
die Inhalte der Verzeichnisse ausgeben lassen und dann mit xxdiff vergleichen ist bei über 60.000 Zeilen doch etwas sehr mühselig.
Für Lösungsvorschläge wäre ich deshalb sehr dankbar. (Bitte keine KDE-basierten Lösungen, denn nur dafür KDE zu installieren wäre noch mühseliger.)
Quick and dirty (in einer Zeile): find . -mindepth 1 -type d -execdir sh -c 'if [ -z "$(find "$1" -maxdepth 1 -type f \( -iname "*.opt" -o -iname "*.pfb" -o -iname "*.ttf" \) -print -quit)" ]; then echo "No fonts found in $1"; fi' sh '{}' \; Das Ganze geht aber auch in lesbar. Dazu schreibt man sich den inneren find Teil in ein extra Script, bspw in ~/bin/find-sh.sh #v+ #!bin/sh if test -z "$( \ find "$1" -maxdepth 1 -type f \( \ -iname "*.opt" -o \ -iname "*.pfb" -o \ -iname "*.ttf" \) \ -print -quit)"; then echo "No fonts found in $1"; fi' #v- und ruft dann dieses Script aus find heraus auf: find . -mindepth 1 -type d -execdir ~/bin/find-sh.sh '{}' \; Viele Grüße, Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (3)
-
Christian Brabandt
-
Heinz W. Pahlke
-
Juergen Langowski