Проблема заключается в том, что ваша команда в обратных галочках, echo {} | tr [:upper:] [:lower:]
, сначала раскрывается оболочкой, так что find
фактически видит в качестве аргументов
find . -depth -iname \* -exec mv {} {} \;
(выполнение tr [:upper:] [:lower:]
на входе{}
просто возвращает вам {}
обратно).
Вот один из обходных путей, используя подоболочку в качестве команды -exec
:
find . -mindepth 1 -depth -iname \* -exec \
sh -c 'mv "$0" "`tr \[:upper:\] \[:lower:\] <<<"$0"`"' {} \;
или более читабельно, используя $ () синтаксис:
find . -mindepth 1 -depth -iname \* -exec \
sh -c 'mv "$0" "$(tr "[:upper:]" "[:lower:]" <<<$0)"' {} \;
Обратите внимание, что вам также нужно заключить в кавычки tr
диапазоны символов, чтобы остановить расширение их оболочкой!
Также неплохо добавить -mindepth 1
, таквы не получаете ошибку при попытке запустить mv . .
.