Переименуйте файлы "* .sample. js" в "*. js" в linux - PullRequest
0 голосов
/ 14 апреля 2020

В настоящее время я работаю над проектом, в котором мне нужно git игнорировать мои локальные конфигурационные файлы. Это означает, что если пользователь клонирует репозиторий, он увидит *.sample.js файлы в директории config. Если пользователь выполняет make config, выполняется следующий сценарий.

config:     ##@Misc Create config files
            @cd src/backend/config
            @cp cache.sample.js cache.js
            @cp database.sample.js database.js
            @cp steam.sample.js steam.js
            @cp teamspeak.sample.js teamspeak.js
            @cp website.sample.js website.js
            @echo

Этот сценарий в основном удаляет часть «образца» из имени файла. Приведенный выше код необходимо изменить, когда я добавляю новый файл конфигурации, что не практично.

Я хотел бы преобразовать это в простую команду регулярного выражения, например:

find -iname \*.sample.js -type f -exec rename -n 's/(.*sample\.js)/$1/' {} \;

Эта команда не работает, по крайней мере на windows MINGW64 bash. Мне нужен ванильный раствор.

1 Ответ

0 голосов
/ 14 апреля 2020

Спасибо @Jetchisel за рабочее решение:

find -iname '*.sample.js' -type f -exec bash -c 'for f; do cp "$f" "${f/.sample}"; done' sh {} +

Бонус: почему этот последний знак +?

Это обработает столько файлов, сколько возможно, избегая arg_max вместо \ ; который будет обрабатывать один файл для -exe c call

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