มีวิธีใช้dos2unix
คำสั่งเพื่อให้ทำงานกับไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่?
man dos2unix
ไม่แสดง-r
ตัวเลือกใด ๆหรือคล้ายกันที่จะทำให้สิ่งนี้ตรงไปข้างหน้า?
มีวิธีใช้dos2unix
คำสั่งเพื่อให้ทำงานกับไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่?
man dos2unix
ไม่แสดง-r
ตัวเลือกใด ๆหรือคล้ายกันที่จะทำให้สิ่งนี้ตรงไปข้างหน้า?
คำตอบ:
การข้ามไบนารีและไฟล์ที่ซ่อนมีความสำคัญสำหรับฉัน:
อันนี้ใช้ได้ดีสำหรับฉัน:
find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k
ซึ่งแปลเป็น: ค้นหาไฟล์ที่ไม่ซ่อนทั้งหมดในไดเรกทอรีปัจจุบันซ้ำแล้วใช้ grep แสดงรายการไฟล์ที่ไม่ว่างเปล่าที่ไม่ใช่ไบนารี (-I) ทั้งหมดแล้วไพพ์ลงใน xargs (คั่นด้วยบรรทัดใหม่) ทีละไฟล์เพื่อ dos2unix และเก็บบันทึกเวลาเดิม
ดูสิ่งนี้ด้วย:
คุณสามารถใช้ find เพื่อค้นหาไฟล์ทั้งหมดในโครงสร้างไดเร็กทอรีที่คุณต้องการรันผ่านคำสั่ง dos2unix ของคุณ
find /path/to/the/files -type f -exec dos2unix {} \;
ลองดูที่ man page เพื่อค้นหามีตัวเลือกมากมายที่คุณสามารถใช้เพื่อระบุสิ่งที่ได้รับการประเมิน
ใช้สัญลักษณ์แทน เช่นนี้: (หากคุณอยู่ในโฟลเดอร์)
dos2unix *
หรือถ้าคุณอยู่นอกโฟลเดอร์ให้ทำ:
dos2unix /path/to/folder/*
การใช้bash
:
shopt -s globstar
dos2unix **
globstar
ตัวเลือกเปลือกในbash
ช่วยให้การใช้งานของ**
glob สิ่งนี้ใช้ได้เหมือน*
แต่ตรงข้าม/
ในชื่อพา ธ (ดังนั้นชื่อที่ตรงกันในไดเรกทอรีย่อยด้วย) สิ่งนี้จะทำงานในไดเรกทอรีที่มีไฟล์จำนวนปานกลางในไดเรกทอรีย่อย (ไม่มากหลายพัน)
ในzsh
และyash
เปลือกหอย (มีset -o extended-glob
ในyash
) คุณจะทำอย่างไร
dos2unix **/*
dos2unix
ข้ามไบนารีโดยปริยาย