หลังจากอ่านคำตอบของคำถามที่น่าสนใจนี้และทำการทดลองกับการ์ด SD สำหรับ Android (exfat) และระบบความบันเทิงในรถยนต์ (vfat) ฉันก็เกิดสคริปนี้ขึ้นมาเล็กน้อย
#! /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
ใช้ปลายทาง (จุดเชื่อมต่อ) ตามที่โต้แย้งและใช้findเพื่อค้นหาไฟล์ทั้งหมดในที่เก็บเพลงของฉัน
สำหรับเส้นทางของไฟล์แต่ละมันคำนวณเส้นทางปลายทางและชื่อไฟล์โดย prepending ปลายทางและแทนที่ตัวอักษรที่กระทำผิดกฎหมายใด ๆ _ที่มีการขีดเส้นใต้ ผมใช้สีขาวรายการของตัวอักษร (ตัวอักษรตัวเลข-, /, ., . (, )และ_) เพื่อเอาเครื่องหมายวรรคตอนที่ไม่พึงประสงค์
สิ่งนี้จะทำให้ตัวอักษรเน้นเสียงอยู่ในพา ธ และชื่อไฟล์ซึ่งก็โอเคสำหรับระบบไฟล์ FAT ที่ทันสมัยอย่างที่เห็น
สำหรับแต่ละพา ธ และชื่อไฟล์ปลายทางจะมีการสร้างไดเรกทอรีตามที่ต้องการโดยใช้mkdir -pจากนั้นไฟล์จะถูกคัดลอกเว้นแต่จะมีอยู่แล้ว
สังเกตเครื่องหมายคำพูด"ในสถานที่ต่าง ๆ พวกเขาจะต้องให้เส้นทางและชื่อกับช่องว่างในพวกเขาจากการแยก