Công cụ làm sạch tên tệp

Dán vào danh sách các tên tệp để nhận được phiên bản đã được xử lý, có thể hoạt động trên mọi hệ điều hành, với mọi định dạng file ZIP và đường dẫn CDN. Công cụ này chuyển các chữ cái có dấu thành ASCII thuần, loại bỏ các ký tự gây lỗi trên Windows (ví dụ: \ / : * ? " < > |), xóa các ký tự điều khiển, gom khoảng trắng và thay thế các chuỗi bị cấm bằng ký tự thay thế do bạn chọn (giá trị mặc định là dấu gạch ngang). Công cụ này rất hữu ích khi tải dữ liệu hàng loạt lên S3, gửi file ZIP chứa tài liệu giảng dạy hoặc sửa lỗi khi nhập ảnh từ thiết bị NAS cũ.

Cách làm sạch tên tệp

  1. 1

    Dán tên tệp

    Một mục trên mỗi dòng, có hoặc không có phần mở rộng; các phần mở rộng được giữ nguyên như hiện trạng.

  2. 2

    Chọn phương án thay thế

    Hãy chọn ký tự dùng để thay thế các trình tự không an toàn. Dấu gạch nối (`-`) là lựa chọn mặc định an toàn nhất; dấu gạch dưới (`_`) là lựa chọn cổ điển hơn.

  3. 3

    Chạy công cụ làm sạch

    Mỗi tên sẽ được cắt bỏ phần thừa, chuyển sang ASCII, loại bỏ các ký tự cấm và gom khoảng trắng. Nếu không còn gì, tên sẽ trở thành `file`.

  4. 4

    Xem xét lại trước khi đổi tên

    Kết quả chỉ liệt kê các tên đã được làm sạch, vì vậy hãy rà soát để phát hiện xung đột (khi hai đầu vào cho cùng một kết quả đầu ra) trước khi đổi tên tại chỗ.

Điều gì là không an toàn và tại sao?

Các hệ thống tập tin và công cụ khác nhau đều sử dụng những danh sách đen riêng biệt. Điểm giao nhau an toàn giữa các nền tảng lại chặt chẽ hơn nhiều so với nhận thức thông thường của người dùng.

Các ký tự và mẫu khiến tên tệp không an toàn

Mục Vì sao không an toàn
\ / : * ? " < > | Bị cấm trên Windows (NTFS, FAT).
Ký tự điều khiển ASCII 0x00-0x1F Không hợp lệ trên hầu hết hệ thống tệp; làm hỏng script shell.
Khoảng trắng ở đầu/cuối Bị Windows âm thầm loại bỏ; lỗi vô hình.
Dấu chấm ở cuối Bị Windows âm thầm loại bỏ.
Tên dành riêng CON, PRN, AUX, NUL, COM1..9, LPT1..9, tất cả đều bị chặn trên Windows.
Dấu tổ hợp Unicode Khiến café trông giống hệt café nhưng lại là tên tệp khác trên một số hệ thống.
Emoji và ký tự tượng hình Vẫn dùng được trên hệ thống hiện đại nhưng làm hỏng pipeline CI cũ và đường dẫn CDN.

Các bước chuẩn hóa được áp dụng

  1. Chuyển sang ASCII. Các chữ cái có dấu trở thành chữ cái gốc đơn giản: café thành cafe, naïve thành naive. Các hệ chữ không có bản tương đương ASCII (CJK, emoji) sẽ bị loại bỏ.
  2. Thay thế ký tự bị cấm. \ / : * ? " < > | và các ký tự điều khiển trở thành ký tự thay thế bạn chọn (mặc định là dấu gạch ngang).
  3. Hãy nén khoảng trắng: Các chuỗi khoảng trắng và tab sẽ được hợp nhất thành một ký tự thay thế duy nhất.
  4. Cắt bỏ phần thừa ở hai đầu. Các dấu chấm và ký tự thay thế ở đầu và cuối bị loại bỏ; kết quả rỗng sẽ trở thành file.
  5. Giữ nguyên phần mở rộng. Các dấu chấm bên trong tên không bị thay thế, nên .pdf, .jpg, .tar.gz vẫn được bảo toàn; chỉ các dấu chấm ở cuối bị loại bỏ.

Mẹo nhỏ

  • Giữ nguyên phần mở rộng. Các dấu chấm bên trong tên được giữ nguyên, nên .pdf, .jpg.tar.gz không thay đổi.
  • Kiểm tra va chạm. Cả Résumé.pdfResume.pdf đều trở thành resume.pdf, vì dấu luôn được chuyển đổi. Hãy xem lại kết quả trước khi đổi tên tại chỗ.
  • Đường dẫn web. Với URL, hãy mã hóa phần trăm sau khi làm sạch, hoặc tốt hơn, giữ slug URL trong tập con [a-z0-9-] để không bao giờ cần mã hóa.

Câu hỏi thường gặp

Đối với các tài nguyên web và tệp ZIP đa nền tảng, đúng vậy, phương pháp này giúp tránh các lỗi nhỏ khi tải tệp lên máy chủ Windows không phân biệt chữ hoa và chữ thường, rồi liên kết từ một hệ thống CDN trên Linux phân biệt chữ hoa và chữ thường. Công cụ không bao giờ thay đổi chữ hoa/thường, vì vậy nếu cần, bạn hãy tự chuyển tên về chữ thường. Còn đối với việc sử dụng cục bộ thì tùy cảm nhận cá nhân mà quyết định.

Các khoảng trắng là hợp pháp trên mọi hệ điều hành hiện đại, nhưng chúng buộc phải sử dụng mã hóa URL (%20), làm gián đoạn nhiều quy trình xử lý trong shell và gây nhầm lẫn cho các công cụ cũ. Việc thay thế chúng bằng dấu gạch ngang sẽ loại bỏ hoàn toàn một nhóm lỗi liên quan.

Công cụ luôn xuất ra ASCII thuần. Các chữ cái có dấu được chuyển đổi (café thành cafe), chữ Kirin được chuyển sang dạng gần đúng bằng bảng chữ Latinh, còn các ký tự không có bản tương đương ASCII (CJK, tiếng Thái, emoji) sẽ bị loại bỏ. Nếu hệ thống đích cần tên không thuộc bảng Latinh gốc, hãy lưu chúng trong một tệp riêng.

Không, danh sách sẽ được xử lý sạch trong bộ nhớ khi thực hiện yêu cầu và không được lưu trữ hay ghi vào bất kỳ nhật ký nào sau đó.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác