Bash Script: переименование пакетного файла для удаления / изменения всех символов, незаконных в файловой системе Windows

Мне нужна помощь здесь, появился проект, где нам нужно изменить файл & amp; имена папок в определенном каталоге, чтобы удалить или заменить любые и все символы, которые будут считаться незаконными в Windows, с несколькими дополнительными символами. Оставить окончательное расширение

ILLEGAL CHARACTERS:

    < (less than)                         MAKE -
    > (greater than)                      MAKE -
    : (colon)                             MAKE -
    " (double quote)                      REMOVE
    / (forward slash)                     MAKE -
    \ (backslash)                         MAKE -
    | (vertical bar or pipe)              MAKE -
    ? (question mark)                     REMOVE
    * (asterisk)                          REMOVE


ADDITIONAL CHARACTERS:

    REMOVE '
    REMOVE %
    REMOVE #
    REMOVE ^
    REMOVE !@#$%^&()=+][{};,`~

Любой символ с надписью «MAKE -» рядом с ним должен быть сделан - (дефис) вместо символа, например, файл с именем John \ Sykes.doc должен стать John-Sykes.doc. Если символ помечен как «REMOVE», его следует удалить, и ничего не будет помещено в его место, например, файл с именем John? Sykes.doc станет JohnSykes.doc

Это довольно важный шаг в очень большом проекте, который мы проводим в нашей организации, и пока я не смог создать сценарий. Я знаю, как создавать простые версии, которые могут изменять имена файлов только в каждом конкретном случае, но не могут быть массовыми. Например, я могу создать скрипт для удаления только @ из имен файлов, но я не знаю, как включать папки / каталоги, и не знаю, как включить в него все остальные символы.

[d3 ] В идеале сценарий запускается в первый раз и создает файл с использованием эха со всеми изменениями, которые необходимо внести, включая полный путь, а затем измененный путь. Затем скрипт должен либо немного измениться, либо использовать mv вместо него, либо он может ссылаться на файл, созданный с помощью эха, и выполнять все необходимые изменения с помощью этого ...

Любая помощь будет оценена так как это действительно очень важно, и у меня нет навыков в этот момент, чтобы сделать это сам ...

Последнее замечание, я не могу использовать команду #rename. Это нарушает нашу ИТ-политику.

EDIT

Я не могу использовать какую-либо версию переименования, главу моего отдела ИТ. запретил это. Я уверен, что у него есть причины, но я не могу сказать, что я к ним привязан. Команда rename недоступна на наших серверах вообще.

Это означает, что я должен использовать чистую bash для выполнения операции.

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

Все, что мне нужно, указано выше, поэтому все, что помечено как «MAKE -», должно стать дефисом, а все, что помечено как «REMOVE», нужно просто уйти.

Если есть что-то еще, спросите. Я с радостью дам дальнейшие комментарии.

1
задан 16 November 2015 в 19:05

0 ответов

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

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