Angenommen, ich habe ein Verzeichnis mit zwei Unterverzeichnissen A und G. Verzeichnis A enthält zwei Unterverzeichnisse (B und C). Verzeichnis B enthält auch zwei Unterverzeichnisse (D und E). Schließlich Verzeichnis D enthält Verzeichnis F.Bash: Verschieben Sie alle Verzeichnisse, in denen der Verzeichnispfad keine bestimmte Zeichenfolge enthält
.
├── A
│ ├── B
│ │ ├── D
│ │ │ └── F
│ │ └── E
│ └── C
└── G
Nun möchte ich alle Verzeichnisse bewegen, wo ihr Weg enthalten B/D Verzeichnis G. nicht ich bin im obersten Verzeichnis Unter der Annahme, in der A und G existieren, ich versuche, diesen Befehl ein:
$shopt -s extglob
$mv !(*B/D*) ./G
Aber ich bin immer diese Fehlermeldung: mv: rename !(*B/D*) to ./G/*: No such file or directory
. Irgendwelche Ideen? Ich bin auch offen für andere Wege, das Problem zu lösen.
Ich nehme an Sie haben eine ganze Menge mehr Verzeichnisse als die in der Realität? Ansonsten ist die einfache Antwort nur mv ./A/B/E ./A/B.C ./G –
Natürlich! Und der Name der Verzeichnisse ist nicht statisch. Sie könnten alles sein. – media