Удалите пробел и замените не-ASCII символы в именах файлов через al oop на make-файл - PullRequest
1 голос
/ 06 февраля 2020

В папке, полной файлов изображений, я хотел бы удалить все пробелы в имени файла. Кроме того, я хочу, чтобы не-ASCII символы были заменены на da sh -. Это необходимо сделать через make-файл.

Примечание. Последняя точка перед суффиксом / расширением файла должна остаться.

пример:

"Рис. 3_16mm_300dpi_1to1_obv .tif "->" Fig-3-16mm-300dpi-1to1-obv.tif "

Мой подход пока

IMGPATH  = "workfiles/inserts/figures"

cleanfigures:
    cd $(IMGPATH) && \
        for f in *; \
        do \
        mv -v "$$f" "$${f//[^a-zA-Z0-9](?=.*?\.)/-}" ; \
        done

Команда regex ([^a-zA-Z0-9](?=.*?\.)) в порядке когда я проверяю его с помощью https://regex101.com/, но он не будет работать соответствующим образом с make-файлом, поскольку ничего не переименовывается и не заменяется.

1 Ответ

1 голос
/ 06 февраля 2020

Вы сказали, что хотите изменить все символы не ASCII на -. Однако, исходя из вашей попытки, кажется, что вы хотите преобразовать в - только те символы, которые не являются цифрами или «простыми» буквами (под простым я имею в виду не акцентированный, не причудливый, ...).

cleanfigures:
    for f in *; \
    do \
    ext="$${f##*.}" ; \
    base="$${f%.*}" ; \
    newbase="$${base//[^a-zA-Z0-9 ]/-}" ; \
    echo "$$f" "$${newbase// /}.$$ext" ; \
    done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...