У меня есть клиент, который дал мне древний PowerMac G4 с незагружающейся ОС и умирающим жестким диском для извлечения файлов. Я работал над этим весь день, и его файлы были успешно восстановлены, но его текущий современный компьютер - это рабочий стол Windows, и многие имена файлов на его старом компьютере имеют звездочку (*) или двоеточие (:) в имени для по какой-то причине ...
Проблема в том, что Windows не позволяет использовать эти символы в именах файлов. Есть ли способ запустить команду терминала или сценарий или что-то подобное на моем ноутбуке с Linux, чтобы пакетно удалить эти символы из его файлов, чтобы он мог скопировать их на свой рабочий стол Windows, вместо того, чтобы вручную переименовывать 500 вещей ...?
Спасибо! :)
Вы можете использовать основанную на Perl команду переименовать
со встроенной в Perl tr
(транслитерация) вместо наиболее часто используемых с
(заменитель).
Ex с учетом
$ ls *[:*]*
'a::b*:c' bar:bam 'foo*baz'
, затем
$ rename -n 'tr/:*/-_/' *
rename(a::b*:c, a--b_-c)
rename(bar:bam, bar-bam)
rename(foo*baz, foo_baz)
Предполагая, что вы включены на машине с Ubuntu, использующей bash,
Составьте список неправильных имен файлов в каталоге, используя команду ls, присвойте файлу списка плохие имена. ls> badnames
Используйте tr, чтобы заменить плохой символ на хороший символ (например, случайный выбор, который не гарантированно совместим с Windows:: to. и * to -), поместив хорошие имена в файл с именем goodnames:
cat badnames | tr ": *" ".-"> goodnames
вставьте два файла вместе (проверьте наличие ошибок и т. Д.)
вставить плохие имена хорошие имена> парные имена
отредактируйте команду mv в начале каждой строки в парных именах
Запустите переименования
bash pairednames
Это будет немного сложнее, если у вас есть плохие файлы в структуре каталогов вместо в одном каталоге. сверху используйте команду find вместо ls.
Я узнал об удивительно удобном пакете под названием detox
, который удаляет проблемные символы из всех файлов в определенном каталоге. Очень полезно!
Чтобы установить его, вы можете загрузить файл tar.gz из здесь, извлечь его cd
в извлеченный каталог и запустить:
./configure
make
sudo make install
См. README для получения дополнительной информации о компиляции пакета.
Пример использования с веб-страницы пакета:
$ ls Future Crew - Skaven - 2-я реальность.s3m $ детокс -v . Сканирование: . ./Future Crew - Skaven - 2nd Reality.s3m -> ./Future_Crew-Skaven-2nd_Reality.s3m $ лс Future_Crew-Skaven-2nd_Reality.s3m
Для получения дополнительной информации о том, как его использовать, см. справочную страницу detox
.
Ответ расширен из ответа OP на вопрос .