wie alle Unterverzeichnisse eines bestimmten Verzeichnisses im Suchpfad des Befehls find in Unix ausgeschlossen werden

9

Ich muss die gesamte Verzeichnishierarchie unserer Server sichern, daher muss ich alle Unterverzeichnisse einiger Verzeichnisse auf dem Server auflisten.

Das Problem ist, dass eines dieser Unterverzeichnisse Zehntausende von Unterverzeichnissen enthält (die Datei mit nur den Namen der Unterverzeichnisse könnte einige hundert Megabytes benötigen und der entsprechende Suchbefehl dauert sehr lange).

Wenn ich zum Beispiel ein Verzeichnis A und ein Unterverzeichnis A / a habe, das Zehntausende von Unterverzeichnissen enthält, möchte ich den Befehl find verwenden, um alle Unterverzeichnisse von A exclusive alle Unterverzeichnisse von A / a , aber nicht A / a selbst .

Ich habe viele Varianten von -prune mit den Antworten in diese Frage bis nein versucht nützen.

Gibt es eine Möglichkeit, den Befehl find unter UNIX zu verwenden?

UPDATE:

Die Antwort von @devnull hat sehr gut funktioniert, aber jetzt habe ich ein anderes Problem, also werde ich meine Frage ein wenig verfeinern:

Ich habe den folgenden Befehl verwendet:

%Vor%

Das neue Problem, das auftaucht, ist, dass find aus irgendeinem Grund immer noch den gesamten Verzeichnisbaum von "/var/www/web-release-data/" und "/var/www/web-development-data/" durchläuft, daher ist es sehr langsam und ich fürchte, es könnte Stunden dauern.

Gibt es eine Möglichkeit, die Verzeichnisse vollständig auszuschließen und ihre jeweiligen Verzeichnishierarchien nicht zu durchlaufen ?

    
DontCareBear 10.09.2013, 15:33
quelle

5 Antworten

2

Folgendes sollte für Sie funktionieren:

%Vor%

Dies würde alle Unterverzeichnisse von A einschließlich A/a auflisten, aber Unterverzeichnisse von A/a ausschließen.

Beispiel:

%Vor%     
devnull 10.09.2013, 15:43
quelle
1

Eine andere Lösung:

%Vor%

Wenn Sie auch a nicht möchten, verwenden Sie

%Vor%     
Aaron Digulla 10.09.2013 15:48
quelle
0

Haben Sie versucht rsync(1) ? Es hat eine Option --exclude=PATTERN , die hier gut funktionieren könnte:

%Vor%

Wenn Sie rsync verwenden, müssen Sie nicht find(1)

verwenden     
Stuart M 10.09.2013 15:41
quelle
0

Um 2 Unterverzeichnisse auszuschließen:

%Vor%     
Fraser11 10.09.2013 16:09
quelle
0

Um Ihre aktualisierte Frage zu beantworten, können Sie

tun %Vor%     
Aaron Okano 10.09.2013 19:51
quelle

Tags und Links