PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gleichnamige Verzeichnisse in versch. Unterverzeichnissen filtern



tetex
27-12-2010, 17:13
Hallo,

habe gleichnamige Verzeichnisse in unterschiedlichen Verzeichnissen und möchte diese Filtern um doppelte anschließend zu löschen.

Kennt jemand einen einfachen Befehl z.B. per "find ..." ?

Sonst muss ich das alternativ mit Schleifen und Co. lösen :-/

Gruß

John W
28-12-2010, 10:43
find -type d | awk -F '/' 'x[$NF]++'
Im kleinen Testfall hat das funktioniert (wie es in einem großen Fall aussieht, weiß ich aber nicht), es wird jeweils die unterste Ebene abgleichen - das geht natürlich schief, wenn du einen Verzeichnisbaum hast, der z.B. so aussieht:


.
|-- a
| |-- a
| |-- b
| |-- c
|-- b
| |-- a
| |-- b
| |-- c
| |-- d
In dem Fall bräuchtest du eine Verzeichnisstruktur, bei der die unterste Ebene immer auf der gleichen ist, dann kannst du


find -type d | awk -F '/' 'x[$<Ebene>]++'
verwenden, im Beispiel also 'x[$2]++'.
Unproblematisch ist der erste Ansatz bei einem Verzeichnisbaum, bei dem kein Elternelement den gleichen Namen trägt wie ein beliebiges Element in den darunter liegenden Ebenen.

msi
28-12-2010, 12:25
wenn die verzeichnisse immer auf der selben ebene auftreten kannst du in diesem fall auch das benutzen:



find . -type d | perl -F'/' -ane 'print if $x{ $#F ."__". $F[ $#F ] }++'