Баш хорош для этого.
для FILE в eventDataLog.txt.2015 *; do mv «$ FILE» «abc- $ FILE»; выполнено
/etc/mdm/Xsession: 35 :/home/jefh/.dnx/dnvm/dnvm.sh [[: не найдено
Это признак того, что /home/jefh/.dnx/dnvm/dnvm.sh
содержит некоторый синтаксис bash/ksh, но он включается в сценарий, который выполняется в sh. Простой sh не имеет конструкции [[...]]
. Жалоба на неожиданное (
, вероятно, связана с назначением массива; sh не имеет массивов.
Решение этой проблемы зависит от выполнения сценария dnvm.sh
. Если я правильно понимаю, это было установлено как часть какого-то пакета; если это так, сообщите об ошибке для этого пакета, требуя, чтобы сценарий был портирован с bash на простой sh (который является оболочкой, используемой для скриптов входа в большинстве Unix-систем, включая большинство установок Linux). Конечно, можно запустить сценарий в отдельном экземпляре bash, но если он выполняется как часть запуска сеанса, то, вероятно, цель состоит в том, чтобы определить некоторые переменные среды, которые должны быть выполнены в исходной оболочке.
Если часть a _ a
является постоянной и используется Linux, можно использовать утилиту rename
. В Debian и производных, измените rename
на rename.ul
как команда rename
является другой утилитой, которая также может выполнять эту работу, но имеет другой синтаксис.
Выполните итерацию по каталогам с помощью цикла
for d in */; do … done
Вызовите rename
для переименования файлов в каждом каталоге.
for d in */; do
rename /a_a "/${d%/}" "$d"a_a*
done