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 -c
porfind
. -
Você pode usar
-execdir
no lugar de-exec
se a implementação defind
oferecer 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: