Вы можете использовать -exec bash -c 'your code here using $0'
.
В вашем случае это
find */* -exec bash -c 'mv "$0" "${0%/*}/foo.${0##*.}"' {} \;
очень похоже на ваш for
.
for f in */*; do mv "$f" "${f%/*}/foo.${f##*.}"; done
Совет 1 :Вы также можете использовать -exec sh -c '.....'
, если вы не используете bash.
Подсказка 2 :Вы можете объединить несколько -exec
под одной и той же находкой:
find./* -type f -exec echo {} \; -exec cat {} \;
Подсказка 3 :Для простых конструкций этот синтаксис допустим:
find. -type f ! -name "*.txt" -exec mv -v '{}' '{}'.txt \;
Совет 4 :Вместо -exec
вы можете использовать -ok
, который запрашивает подтверждение пользователя перед выполнением команды (полезно для тестирования)
Выше работает в GNUfind
(У меня версия 4.6.0 ), но я не уверен, что все эти советы работают в других реализациях find
.