A página man do GNU find
descreve -execdir
em parte:
Like
-exec
, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you startedfind
.
Portanto, não há sutileza real envolvida. -exec
chama o comando do diretório em que você executa find
(e, portanto, precisa fornecer o caminho relativo a esse diretório ou absoluto a partir da raiz), e -execdir
chama o comando do diretório que contém o arquivo e portanto, não precisa fornecer o caminho completo, então não precisa.
Para obter o comportamento desejado, use -exec
em vez de -execdir
.
Você pode demonstrar esse comportamento substituindo sua invocação rm
por, por exemplo, echo
para simplesmente imprimir a lista de parâmetros (nesse caso, o nome do arquivo). Ou use -print
, que faz isso sem precisar invocar um comando externo. (Nota: -print
também é a ação padrão se nenhuma for dada.)
Se você não precisava da confirmação, poderia ter usado -delete
. Para um grande número de arquivos, é provável que seja mais eficiente, já que evita ter que invocar rm
vez após vez.