Есть ли способ удалить символ из нескольких имен файлов

У меня есть клиент, который дал мне древний PowerMac G4 с незагружающейся ОС и умирающим жестким диском для извлечения файлов. Я работал над этим весь день, и его файлы были успешно восстановлены, но его текущий современный компьютер - это рабочий стол Windows, и многие имена файлов на его старом компьютере имеют звездочку (*) или двоеточие (:) в имени для по какой-то причине ...

Проблема в том, что Windows не позволяет использовать эти символы в именах файлов. Есть ли способ запустить команду терминала или сценарий или что-то подобное на моем ноутбуке с Linux, чтобы пакетно удалить эти символы из его файлов, чтобы он мог скопировать их на свой рабочий стол Windows, вместо того, чтобы вручную переименовывать 500 вещей ...?

Спасибо! :)

-1
задан 15 June 2020 в 08:00

3 ответа

Вы можете использовать основанную на 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)
0
ответ дан 19 June 2020 в 21:24

Предполагая, что вы включены на машине с Ubuntu, использующей bash,

  1. Составьте список неправильных имен файлов в каталоге, используя команду ls, присвойте файлу списка плохие имена. ls> badnames

  2. Используйте tr, чтобы заменить плохой символ на хороший символ (например, случайный выбор, который не гарантированно совместим с Windows:: to. и * to -), поместив хорошие имена в файл с именем goodnames:

    cat badnames | tr ": *" ".-"> goodnames

  3. вставьте два файла вместе (проверьте наличие ошибок и т. Д.)
    вставить плохие имена хорошие имена> парные имена

  4. отредактируйте команду mv в начале каждой строки в парных именах

  5. Запустите переименования

    bash pairednames


Это будет немного сложнее, если у вас есть плохие файлы в структуре каталогов вместо в одном каталоге. сверху используйте команду find вместо ls.

0
ответ дан 19 June 2020 в 21:24

Я узнал об удивительно удобном пакете под названием 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 на вопрос .

1
ответ дан 6 December 2020 в 19:33

Другие вопросы по тегам:

Похожие вопросы: