Як рекурсивно перейменувати файли / папки, щоб зробити їх імена зручними для Windows?


11

У вікні Ubuntu у мене є маса файлів, які мають різні символи у своїх іменах, які Windows не приймає (в основному ":" і "*", але можливо інші).

Який найпростіший спосіб їх перейменувати та перемістити на машину Windows? Добре замінити цих символів чимось на зразок "[двокрапка]" та "[зірочка]".


1
Вам слід уникати таких імен навіть під Linux (особливо *).
cYrus

4
@cYrus Залежить від обробки файлів. Я гадаю, це лише питання зі сценарієм і в оболонках. Я в ОС X і єдиний заборонений персонаж - :це досить погано. Імена документів після їх вмісту є корисним, а якщо назва статті закінчується питанням, так і назва файлу.
Даніель Бек

@cYrus і я в своєму програмному забезпеченні, але деякі програми написані людьми, які цього не роблять. Наприклад, qmail використовує: майже в кожному створеному імені файлу.
RomanSt

@Daniel Beck: Звичайно, але, на жаль, наявності файлової системи, яка підтримує такі імена, цього недостатньо, оскільки ви можете використовувати програми, які зіпсували все. Я навіть не використовую пробілів.
cYrus

2
@Steven гарне питання! Я думаю, що Windows буде дещо кориснішим, оскільки може статися, що хтось отримує файли в Windows і повинен виправити їх на цій платформі.
Пельтьє

Відповіді:


4

Погляньте на перейменування та детокс Glindra .

Файлові утиліти Glindra можна встановити на Windows або Linux. Приклади очищення імен файлів у Windows:

rena *.* -portable

rena *.* -safe
  • -забезпечити
    Карти, що ведуть тире (дефіс) до підкреслення.
    Згортає пробіли.
    Карти проблемних символів на зразок * ?: [] "<> | () {} для підкреслення.
  • -portable
    Виконує ті ж операції очищення, що і -safe, і додатково:
    Мапи всіх 8-бітових символів від верхньої половини латинського алфавіту до розумних 7-бітних резервних символів.
    Зобразити символи "" "єдиної цитати, щоб підкреслити.

Джерело: Виправлення імен файлів Unix / Linux / POSIX: Контрольні символи (наприклад, новий рядок), провідні тире та інші проблеми


На цій сторінці відображається 404. Копія Google, кешована .
Даніель Бек

Це одна дивовижна злоба Девіда Уілера! Особливо після того, як я щойно розбив клавіатуру після спроби вписати в каталог, який JungleDisk назвав "~ \ irina". Хочете здогадатися, чи спрацювало завершення вкладки? ...
RomanSt

1
Detox призначений для створення файлів Windows Uni-friendly, не навпаки.
ендоліт

3
@DennisWilliamson - Схоже, glindra (для Windows) не може перейменовувати символи з недійсними іменами. G:\spc>rena.exe -safe -portable *.txtвиходи[FATAL-ERROR] Filename syntax error: aa:a.txt
Стівен

1
Зверніть увагу на зміну синтаксису під час переходу на Linux, тобто rena '*.*' -portable, якщо ви хочете, щоб це було рекурсивно, використовуйте щось на кшталт rena '***/*.*' -portableLinux. І я вважаю, що перейменування потрібно робити в Linux, а не в Windows.
holroy

4

Спробуйте Recuva .

Це єдина утиліта Windows, яку я знайшов, яка обробляє файли файлів, що не є дружніми для Windows.

Увімкніть Сканування не видалених файлів (для відновлення з пошкоджених або переформатованих дисків) та скануйте свою папку. Після відновлення увімкніть Відновити структуру папки . Recuva ефективно "скопіює" весь каталог в інше місце, одночасно "закріпивши" дружні імена файлів.


1

Не перебуваючи на Linux і не тестуючи нічого, я вважаю, що можна було б скористатись одними лайнерами, як описано нижче.

Щоб змінити один символ:

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

І нарешті, щоб видалити всі символи, що не буквено-цифрові:

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

Зауважте, що це потрібно поширити на всі інші незаконні символи Windows, тобто<>:"/\|?*
holroy

0

Якщо ваші файли вже містять обсяг NTFS, здається, що запуск chkdisk з Windows "вирішує" проблему. На жаль, схоже, що це робиться, видаляючи файли, що ображають.


0

Мені вдалося поєднати перші два відповіді плюс pyRenamer (GUI). У Linux я використовував pyRenamer для згортання пробілів у назвах папок (каталогів) - замінюючи простір нічим - щоб інші програми (перейменувати Glindra) працювали рекурсивно (можна було розмістити підкреслення). З файлів я також вийняв кілька прийнятних для Windows символів або слів, щоб заощадити простір, і аналогічно згорнув пробіли у назви файлів. Потім я запустив Рену, щоб вийняти символи, що не є Windows, зберегли на флешку, а потім використали Recuva для "відновлення" у папці під Windows. Recuva вказує, чи шлях файлу занадто довгий (і він також видаляє символи, які не є Windows). Я ще не знайшов інструмент, який би перевіряв шлях імен файлів, щоб побачити, чи знаходяться вони в межах максимальної межі Windows 255 (або скажімо, 240, щоб дозволити деяку свободу).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.