
Meine Ordnerstruktur ist wie folgt:
Photos
|
|---> 2015-08-23
|
|---> IMG_0019.JPG // keep
IMG_0019.JPG.json // toss
IMG_0020.JPG // keep
IMG_0020.JPG.json // toss
IMG_0021.JPG // keep
IMG_0021.JPG.json // toss
metadata.json // toss
2015-08-24
|
|---> IMG_0242.MP4 // keep
IMG_0242.MP4.json // toss
metadata.json // toss
2015-08-25
|
|---> IMG_0243.MOV // keep
IMG_0243.MOV.json // toss
IMG_0243(1).MOV // keep
IMG_0243(1).MOV.json // toss
IMG_0244.PNG // keep
IMG_0019.PNG.json // toss
metadata.json // toss
Das geht immer weiter. Mein Ziel ist es, eine Ordnerstruktur wie diese zu haben
Photos
|
|--> IMG_0019.JPG
IMG_0020.JPG
IMG_0021.JPG
IMG_0242.MP4
IMG_0243.MOV
IMG_0243(1).MOV
IMG_0244.PNG
...
Ich habe mir überlegt, eine modifizierte Version davon zu machenArtikel Dabei würde ich jedes Verzeichnis durchlaufen und einen regulären Ausdruck ausführen, um nur die Datei mit dem Wert zu erfassen. So etwas wie:
// get a list of all directories
// loop through directories
// get all contents in directory
// loop through all contents in directory
// determine if file is of value (ie. MP4, PNG, MOV, JPG, etc.)
// move selected file out to parent directory
// remove directory
Jede Hilfe wäre willkommen
Antwort1
Von der Struktur im erwarteten Ergebnis möchten Sie nur die Dateien behalten, die nicht mit enden .json
. So funktioniert es:
cd Photos
find . -type f ! -name *.json -exec mv {} . \; && rm -rf 2015*
Suchen Sie im Verzeichnis „Fotos“ nach den Dateien, die nicht auf enden .json
, verschieben Sie sie in .
oder das aktuelle Verzeichnis und löschen Sie dann die Unterverzeichnisse und die darin enthaltenen Dateien, die Sie nicht benötigen. Sie können auch verwenden, rm -ri 2015*
sodass Sie vor dem Entfernen jedes Verzeichnisses gefragt werden, oder führen Sie die Befehle find
und rm
separat aus, falls Sie es sich anders überlegen, bevor Sie die restlichen Dateien und deren Verzeichnisse löschen.