Bu çok ilginç sorunun cevaplarını okuduktan ve Android (exfat) ve bir araba eğlence sistemi (vfat) için SD kart ile biraz deneme yaptıktan sonra, bu küçük bash betiği ile geldim.
#! /bin/bash
DST=$1
# copy music to FAT media
find music/ Music/ -type f | while read f ; do
d=$DST/$( echo $f | sed 's/[^-A-Za-z0-9/._ ()]/_/g' )
echo :$d:
mkdir -p "$(dirname "$d")"
cp -n "$f" "$d"
done
Hedefi argüman olarak alır ve find
müzik havuzumdaki tüm dosyaları bulmak için kullanılır .
Her dosya yolu için, hedefi önceden ekleyerek ve rahatsız edici herhangi bir karakteri bir alt çizgi ile değiştirerek bir hedef yol ve dosya adı hesaplar _
. Ben karakterlerin bir beyaz liste kullanın (harfler, rakamlar, -
, /
, .
,
. (
, )
Ve _
) istenmeyen noktalamayı kaldırmak için.
Yerel ayara bağlı olarak, yol ve dosya adında aksanlı harfler, göründüğü gibi, modern FAT dosya sistemleri için sorun olmayacaktır.
Her hedef dosya yolu ve adı için, dizinler gerektiği şekilde oluşturulur ve mkdir -p
daha önce var olmadıkça dosya kopyalanır.
"
Çeşitli yerlerdeki alıntı karakterlerine dikkat edin, içindeki boşluklara sahip yolları ve adları parçalamaktan kaçınmaları gerekir.