Mit der folgenden Dateihierarchie:
dir
├── dirA
│ └── snapshot
│ └── subdir1
│ └── file1
└── dirB
└── snapshot
└── subdir2
└── file2
Ich möchte Dateien aus jedem Snapshot/Unterverzeichnis mit einem einzigen Befehl in das übergeordnete Verzeichnis des Snapshots verschieben. Das wäre:
dir
├── dirA
│ └── file1
│ └── snapshot
│ └── subdir1
└── dirB
└── file2
└── snapshot
└── subdir2
Ich habe es versucht mv dir/*/snapshot/*/* ../../
, aber da der Zielteil ../../
relativ zum Arbeitsverzeichnis ist, funktioniert es offensichtlich nicht.
Ist dies mit Bash-Befehlen möglich (da ich noch nie eine einzige Zeile eines Bash-Skripts geschrieben habe)?
Antwort1
Aufgrund der aufmerksamen Beobachtung von @Don_Christ wurde diese Antwort bearbeitet, wodurch eine Untershell eingespart wurde:
for i in dir/*/snapshot; do
mv "$i"/*/* "$i"/..
done