Isso faz o que eu preciso fazer
find ./ -name "cleanup.log-*" | xargs -I '{}' sh -c 'mv "$1" $(echo {} | cut -d"-" -f-2)' - {}
O bit complicado foi converter a string -I {}
da substituição xargs em argumentos para o comando xargs sh -c ...
.
Eu fiz isso colocando um argumento de opção no -
, no final do comando antes da string de substituição {}
.
Assim, meu comando para xargs é o seguinte.
sh -c 'mv "$1" $(echo {} | cut -d"-" -f-2)' - {}
Eu usei isso para testar o que eu queria antes de executar o comando Mover
find ./ -name "upload.log-*" | xargs -I '{}' sh -c 'echo "$1" $(echo {} | cut -d"-" -f-2)' - {}
Achei este site útil para entender como resolver esse problema