grep
здесь не имеет значения.Используйте find
:
find . ! \( -type d -name needed_files -prune \) -type f -name '*.gz' \
-exec echo mv -t needed_files {} +
POSIX-эквивалент этого -exec
равно
-exec sh -c 'echo mv "$@" needed_files' _ {} +
Если его вывод выглядит хорошо, удалите echo
.
Btw Iзаметил, что в заголовке написано copy , но вы также говорите Я хочу переместить , поэтому решите, что именно вы хотите сделать, и дайте мне знать, чтобы я мог отредактировать свой ответ.