Wie verschiebe ich einige Dateien in das übergeordnete Verzeichnis?

13

Ich möchte alle MP3s, die versehentlich in einem Flac-Ordner abgelegt wurden, in ihren übergeordneten Ordner ziehen.

Es sollte egal sein, wie tief die Ordner sind, ich möchte nur die passenden Dateien genau ein Verzeichnis nach oben verschieben.

So wähle ich meine Dateien aus:

find . -path "*/flac/*" -name '*.mp3'

Dies funktioniert aus meinem Musikordner, aber ich stecke hier fest. Alle Lösungen, die ich gefunden habe, verschieben entweder die Dateien in den übergeordneten Ordner des aktuellen Ordners oder erfordern eine feste Struktur.

Marcel
quelle

Antworten:

24

Versuchen:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

Wie es funktioniert

  1. find .

    Starten Sie einen Suchbefehl für das aktuelle Verzeichnis.

  2. -path "*/flac/*"

    Wählen Sie nur Dateien mit flacin ihrem Pfad

  3. -name '*.mp3'

    Wählen Sie nur Dateien mit der Erweiterung .mp3.

  4. -execdir mv -t ../ {} +

    Führen Sie für alle gefundenen Dateien den mvBefehl aus dem Verzeichnis aus, in dem sich die Datei befindet, und verschieben Sie die Datei in das übergeordnete Verzeichnis.

    Die Option vereinfacht nicht nur diese Aufgabe, sondern -execdirist auch sicherer als die herkömmliche -execOption.

Vereinfachung

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
John1024
quelle
1
Nett! Macht genau das was ich will.
Marcel
Ist das + eine Alternative für das Ritualistische? ?
Rackandboneman
@ Johnn1024 Angenommen, es gibt keine verschachtelten Verzeichnisse mit demselben flacPfad wie */flac/flac/x.mp3sonst wird die x.mp3Datei um zwei Ebenen nach oben verschoben.
22.