mv терпит неудачу с целью не является каталогом при использовании даты

Я запускаю это

sudo mv /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.{,$(date +%Y%m%d%H%M%S)}

Я получил:

mv: target '/etc/mysql/mysql.conf.d/mysqld.cnf.20190517170628' не является каталогом

Бег

sudo mv /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.222

работает хотя

есть идеи?

1 ответ

 /etc/mysql/mysql.conf.d/mysqld.cnf.{,$(date +%Y%m%d%H%M%S)}

Это расширяет до двух файлов, так что в общей сложности после выполнения фигурной скобки у вас будет 3 параметра командной строки для команды mv. Проверьте это с помощью echo вместо mv

Когда mv вызывается с 3 или более аргументами, он будет рассматривать все, кроме последнего, как файлы, которые нужно переместить, а последний элемент - как каталог назначения, куда вы хотите переместить вещи. То есть

mv file1 file2 directory

Если ваша цель - переместить только один конкретный файл, расширение фигурной скобки можно пропустить и использовать только подстановку команды с командой date

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