Làm cách nào để đổi tên đệ quy các tệp / thư mục để làm cho tên của chúng thân thiện với Windows?


11

Tôi có một loạt các tệp trên hộp Ubuntu, có nhiều ký tự khác nhau trong tên tệp mà Windows không chấp nhận (chủ yếu là ":" và "*", nhưng có thể là các tệp khác).

Cách đơn giản nhất để đổi tất cả những thứ này thành tên và chuyển sang máy Windows là gì? Bạn có thể thay thế các ký tự này bằng một cái gì đó như "[dấu hai chấm]" và "[dấu hoa thị]".


1
Bạn nên tránh những tên như vậy ngay cả trong Linux (đặc biệt *).
cYrus

4
@cYrus Phụ thuộc vào cách bạn xử lý tệp. Tôi tưởng tượng nó chỉ là một vấn đề với kịch bản và trong shell. Tôi đang dùng OS X và nhân vật bị cấm duy nhất :là đủ tệ. Đặt tên tài liệu sau nội dung của chúng là hữu ích và nếu tên bài viết kết thúc bằng một câu hỏi, thì tên tệp cũng vậy.
Daniel Beck

@cYrus và tôi làm, trong phần mềm của tôi, nhưng một số phần mềm đã được viết bởi những người không. Ví dụ: qmail sử dụng: trong hầu hết mọi tên tệp mà nó tạo.
RomanSt

@Daniel Beck: Chắc chắn, nhưng không may có một hệ thống tệp hỗ trợ các tên như vậy là không đủ vì bạn có thể sử dụng các chương trình gây rối toàn bộ. Tôi thậm chí không sử dụng không gian.
cYrus

2
@Steven câu hỏi hay! Tôi nghĩ Windows sẽ hữu ích hơn một chút, vì có thể ai đó nhận được các tệp trên Windows và phải sửa chúng trên nền tảng đó.
Peltier

Câu trả lời:


4

Hãy xem Glindra đổi têncai nghiện .

Tiện ích tập tin Glindra có thể được cài đặt trên Windows hoặc Linux. Ví dụ về làm sạch tên tệp trên Windows:

rena *.* -portable

rena *.* -safe
  • -an toàn
    Maps dấu gạch ngang hàng đầu (có dấu gạch nối) để dấu gạch dưới.
    Thu gọn không gian.
    Bản đồ các ký tự có vấn đề như *?: [] "<> | () {} Để gạch dưới.
  • -portable
    Thực hiện các hoạt động dọn dẹp tương tự như -safe và thêm vào đó: Ánh xạ
    tất cả các ký tự 8 bit từ nửa trên của bảng chữ cái Latin 1 sang các ký tự dự phòng 7 bit hợp lý.
    Ánh xạ các ký tự trích dẫn duy nhất '`' vào dấu gạch dưới.

Nguồn: Sửa tên tệp Unix / Linux / POSIX: Ký tự điều khiển (như dòng mới), dấu gạch ngang hàng đầu và các vấn đề khác


Trang đó hiển thị 404. Google lưu trữ bản sao .
Daniel Beck

Đó là một câu nói tuyệt vời của David Wheeler! Đặc biệt là sau khi tôi vừa bash bàn phím của mình sau khi cố gắng cd vào một thư mục mà JungleDisk có tên là "~ \ irina". Bạn có muốn đoán liệu việc hoàn thành tab có hoạt động trên nó không? ...
RomanSt

1
Detox là để làm cho các tệp Windows thân thiện với Unix, không phải theo cách khác.
endolith

3
@DennisWilliamson - Có vẻ như glindra (đối với Windows) không thể đổi tên các ký tự có tên tệp không hợp lệ. G:\spc>rena.exe -safe -portable *.txtđầu ra[FATAL-ERROR] Filename syntax error: aa:a.txt
Steven

1
Hãy lưu ý thay đổi cú pháp khi đi tới Linux, nghĩa là rena '*.*' -portablevà nếu bạn muốn nó đệ quy hãy sử dụng một cái gì đó như rena '***/*.*' -portabletrên Linux. Và tôi tin rằng việc đổi tên nên được thực hiện trên Linux, không phải trên Windows.
holroy

4

Hãy thử Recuva .

Đây là tiện ích Windows duy nhất tôi tìm thấy xử lý tên tệp không thân thiện với Windows.

Bật Quét các tệp không bị xóa (để khôi phục từ các đĩa bị hỏng hoặc được định dạng lại) và quét thư mục của bạn. Khi khôi phục, bật Khôi phục cấu trúc thư mục . Recuva sẽ "sao chép" toàn bộ thư mục sang một vị trí khác một cách hiệu quả trong khi "santitizing" tên tệp không thân thiện.


1

Không có trên Linux và không thử nghiệm bất cứ điều gì, tôi tin rằng người ta có thể sử dụng một lớp lót như những cái bên dưới.

Để thay đổi một ký tự:

find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +

Và cuối cùng để xóa tất cả các ký tự không chữ và số:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +

Xin lưu ý rằng điều này cần phải được mở rộng với tất cả các nhân vật bất hợp pháp khác của các cửa sổ, tức là<>:"/\|?*
holroy

0

Nếu các tệp của bạn đã ở trên ổ đĩa NTFS, có vẻ như việc chạy chkdisk từ Windows sẽ "giải quyết" vấn đề. Thật không may, có vẻ như nó làm như vậy bằng cách xóa các tập tin vi phạm.


0

Tôi đã quản lý với sự kết hợp của hai câu trả lời đầu tiên, cộng với pyRenamer (GUI). Trong Linux, tôi đã sử dụng pyRenamer để thu gọn khoảng trắng trong tên thư mục (thư mục) - bằng cách thay thế không gian bằng không có gì - để các chương trình khác (đổi tên Glindra) hoạt động đệ quy (người ta có thể đặt dấu gạch dưới). Từ các tập tin, tôi cũng lấy ra một số ký tự hoặc từ có thể chấp nhận được để tiết kiệm dung lượng và các không gian bị thu gọn tương tự trong tên tệp. Sau đó, tôi đã chạy rena để loại bỏ các ký tự không phải cửa sổ, được lưu vào ổ đĩa flash và sau đó sử dụng Recuva để 'khôi phục' vào một thư mục trong Windows. Recuva chỉ ra nếu một đường dẫn tệp quá dài (và nó cũng loại bỏ các ký tự không phải là windows). Tôi vẫn chưa tìm thấy một công cụ kiểm tra đường dẫn của tên tệp để xem liệu chúng có nằm trong giới hạn tối đa của Windows là 255 không (hay nói là 240 để cho phép một số chậm trễ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.