Sim, find funciona com nomes de caminho, não com nomes de arquivo.
Existem duas soluções imediatas:
-
Você pode extrair a parte do nome do nome do caminho e usá-la no nome do caminho de destino usado por
mv.find /Users/myname/Desktop/backups/websites/testwebsite.co.uk \ -maxdepth 1 -type d -mtime +1 \ -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' \ -exec sh -c 'mv "$1" "/Users/myname/Desktop/backups/trash/${1##*/}_renamed"' sh {} ';'Aqui,
${1##*/}é o mesmo que$( basename "$1" )e$1é o nome do caminho dado ao scriptsh -cporfind. -
Você pode usar
-execdirno lugar de-execse a implementação defindoferecer suporte a ela. Com-execdir, o comando dado é executado na pasta pai do item encontrado e{}será o nome da base do item (com BSDfind) ou o nome da base prefixado por./(com GNUfind).find /Users/myname/Desktop/backups/websites/testwebsite.co.uk \ -maxdepth 1 -type d -mtime +1 \ -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' \ -execdir mv {} /Users/myname/Desktop/backups/trash/{}_renamed ';'
Relacionados: