Bagaimana cara memindahkan beberapa file ke direktori induknya?

13

Saya ingin menarik semua mp3 yang secara tidak sengaja dimasukkan ke dalam folder flac, ke folder induknya.

Seharusnya tidak peduli seberapa dalam folder itu, saya hanya ingin memindahkan file yang cocok tepat satu direktori.

Inilah cara saya memilih file saya:

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

Ini berfungsi dari folder musik saya, tetapi saya macet di sini. Semua solusi yang saya temukan, baik memindahkan file ke induk folder saat ini, atau memerlukan beberapa struktur tetap.

Marcel
sumber

Jawaban:

24

Mencoba:

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

Bagaimana itu bekerja

  1. find .

    Mulai perintah temukan yang bekerja di direktori saat ini.

  2. -path "*/flac/*"

    Pilih hanya file dengan flacdi jalurnya

  3. -name '*.mp3'

    Pilih hanya file dengan ekstensi .mp3.

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

    Untuk setiap file yang ditemukan jalankan mvperintah dari direktori tempat file tersebut berada dan pindahkan file tersebut ke direktori induk.

    Selain mempermudah tugas khusus ini, opsi -execdirini juga lebih aman daripada -execopsi tradisional .

Penyederhanaan

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
John1024
sumber
1
Bagus! Melakukan persis apa yang saya inginkan.
Marcel
Apakah + merupakan alternatif untuk ritualistik \; ?
rackandboneman
@ Johnn1024 dengan asumsi tidak ada direktori bersarang dengan flacjalur yang sama seperti */flac/flac/x.mp3sebaliknya x.mp3file akan naik dua tingkat.
αғsнιη