Проблема в том, что ваша команда в обратных кавычках, 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 . .
.
person
Community
schedule
16.11.2011