У меня есть папка, содержащая около 40 SQL-скриптов с разными именами. Все они используют шаблон number description
.sql
. Номер файла состоит из 2 цифр и идет от 01 до 40, не все номера в этом диапазоне включены.
Я хотел бы перебрать эту папку с файлами и запустить их через mysql cmd в порядке имен файлов DESC.
Как я могу запустить их все через mysql cmd
в порядке убывания номера файла? Спасибо.
Если бы Вы хотели запустить скрипты в возрастающем лексикографическом порядке, то Вы могли бы сделать
for x in *.sql; do
mysql <"$x"
done
Список файлов в порядке убывания может быть сделан легко в zsh , благодаря O
спецификатор шарика, но в ударе нет никакой соответствующей функции. При подсказке zsh:
for x in *.sql(On); do
mysql <"$x"
done
Между прочим, если бы Ваши числа не имели продвижения 0, то Вы могли бы использовать (nOn)
здесь, к виду 9 foo.sql
прежде 10 bar.sql
.
Только Используя программы, которые находятся в стандартной установке (плюс mysql
), можно перечислить файлы, отсортировать их, как желаемый с sort
(или непосредственно обратный порядок с tac
), и выполните итерации по результату.
for x in *.sql; do echo "$x"; done |
tac |
while IFS= read -r script; do mysql <"$script"; done