Как удалить специальные символы из имен файлов, соответствующих S3? - PullRequest
0 голосов
/ 10 октября 2018

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

Множество персонажей необходимо заменить, и я понимаю, что у каждого из них есть свой особый способ побега.Я должен сохранить некоторые из них, такие как - и

До сих пор я пробовал несколько уловок sed, но это всегда грязно.

Кажется, что у каждого персонажа есть свой уникальный способ побега.

Есть ли лучшие способы сделать это?

Это то, что я получил до сих пор:

    #!bin/bash
    for f in "($find ./ -type f)"; do
     newName=`sed 's/[!@?:#$%^&*()]/_/g' << '$f'``
    done

1 Ответ

0 голосов
/ 17 октября 2018

Это было бы намного проще сделать в tr, используя отрицание / дополнение.По сути, перечислите все допустимые символы, которые вы хотите разрешить иметь в своих файлах, и скажите tr заменить что-либо еще вашим заменяющим символом _:

    #!/bin/bash
    for filename in "($find ./ -type f)"; do
       newName=`echo -n ${filename} | tr -c 'A-Za-z0-9_.' '_'`
    done

В приведенном выше примере вы быразрешить все печатные прописные и строчные буквы, цифры, _ и ..Добавьте в список любые другие символы, которые вы хотите разрешить.

Кроме того, просто для справки, я нашел эту ссылку, в которой перечислены все символы, которых следует избегать для имен объектов S3: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...