มีวิธีใช้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ข้ามไบนารีโดยปริยาย