Как рекурсивно переименовывать файлы / папки, чтобы сделать их имена удобными для Windows?

У меня есть куча файлов на коробке Ubuntu, в которых есть различные символы в именах файлов, которые Windows не принимает (в основном ":" и"*", но, возможно, другие).

какой самый простой способ переименовать все это и переместить на машину Windows? Можно заменить эти символы чем-то вроде "[двоеточие]" и "[звездочка]".

12
задан RomanSt
20.03.2023 22:14 Количество просмотров материала 2453
Распечатать страницу

5 ответов

Try Recuva.

Это единственная утилита для Windows, которую я нашел, которая обрабатывает имена файлов, отличные от Windows.

включить поиск не удаленных файлов (для восстановления с поврежденных или переформатированных дисков) и сканировать папку. При восстановлении включите восстановить структуру папок. Recuva будет эффективно "копировать" весь каталог в другое место, "сантитизируя" недружественные имена файлов.

4
отвечен Steven 2023-03-22 06:02

посмотри Glindra переименовать и detox.

glindra file utilities может быть установлен на Windows или Linux. Примеры очистки имен файлов в Windows:

rena *.* -portable

rena *.* -safe
  • -safe

    Отображает тире (дефисы) в подчеркивания.

    Сворачивает пространства.

    Карты проблемные символы, такие как *?:[]"<>|(){} к подчеркивать.
  • -портативный

    Выполняет те же операции очистки, что и-safe, и дополнительно:

    Отображает все 8-разрядные символы из верхней половины латинского алфавита 1 на разумные 7-разрядные резервные символы.

    Отображает символы одинарной кавычки " для подчеркивания.

источник: исправление имен файлов Unix / Linux / POSIX: управляющие символы (например, перевод строки), начальные тире и другие Проблемы

3
отвечен Dennis Williamson 2023-03-22 08:19

не будучи на 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' {} +
1
отвечен harrymc 2023-03-22 10:36

Если ваши файлы уже находятся на томе NTFS, кажется, что запуск chkdisk из Windows "решает" проблему. К сожалению, похоже, что он делает это, удалив оскорбительные файлы.

0
отвечен Peltier 2023-03-22 12:53

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

0
отвечен Vitex 2023-03-22 15:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх