Как использовать расширение параметра с find -exec {}? [дубликат]

0
20.10.2018, 19:50
1 ответ

Вы можете использовать -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.

2
28.01.2020, 02:31

Теги

Похожие вопросы