Bazı dosyalar ana dizinlerine nasıl taşınır?


13

Yanlışlıkla bir flac klasörüne konulan tüm mp3'leri ana klasörüne çekmek istiyorum.

Klasörlerin ne kadar derin olduğu önemli olmamalı, sadece eşleşen dosyaları tam olarak bir dizin yukarı taşımak istiyorum.

Dosyalarımı şu şekilde seçiyorum:

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

Bu benim müzik klasörümden çalışıyor, ama burada kaldım. Bulduğum tüm çözümler, dosyaları geçerli klasörün üst öğesine taşıyor veya sabit bir yapı gerektiriyor.

Yanıtlar:


24

Deneyin:

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

Nasıl çalışır

  1. find .

    Geçerli dizinde çalışan bir find komutu başlatın.

  2. -path "*/flac/*"

    Yalnızca flacyollarında olan dosyaları seçin

  3. -name '*.mp3'

    Yalnızca uzantıya sahip dosyaları seçin .mp3.

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

    Bulunan tüm dosyalar için mvkomutu dosyanın bulunduğu dizinden çalıştırın ve dosyayı üst dizine taşıyın.

    Bu özel görevi kolaylaştırmanın yanı sıra, seçenek -execdirgeleneksel -execseçenekten daha güvenlidir .

sadeleştirme

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

1
Güzel! Tam olarak istediğimi yapar.
Marcel

+ Ritüelist için bir alternatiftir \; ?
rackandboneman

Johnn1024 varsayarak @ aynı ile hiçbir iç içe dizinleri yoktur flacgibi yolunda */flac/flac/x.mp3aksi x.mp3dosyası iki seviye yukarı hareket edecektir.
αғsнιη

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.