หลังจากอ่านคำตอบของคำถามที่น่าสนใจนี้และทำการทดลองกับการ์ด 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
จากนั้นไฟล์จะถูกคัดลอกเว้นแต่จะมีอยู่แล้ว
สังเกตเครื่องหมายคำพูด"
ในสถานที่ต่าง ๆ พวกเขาจะต้องให้เส้นทางและชื่อกับช่องว่างในพวกเขาจากการแยก