Discussion:
Verzeichnisse mit fehlenden Dateien finden
Heinz W. Pahlke
2014-06-22 15:16:59 UTC
Permalink
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+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Juergen Langowski
2014-06-22 17:43:44 UTC
Permalink
Am Sun, 22 Jun 2014 17:16:59 +0200
Post by 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+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Christian Brabandt
2014-06-23 15:23:12 UTC
Permalink
Post by 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+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Lesen Sie weiter auf narkive:
Loading...