Na verdade, lendo o que você está tentando fazer, provavelmente você está acertando esse bug onde alguém apontou que você recebe uma mensagem de erro incorreta ao tentar substituir um diretório não vazio por outro diretório (o que não é permitido).
Estou recebendo um erro ao tentar remover alguns arquivos que realmente não fazem sentido. Eu recebo este erro:
mv: cannot move 'thatDir' to a subdirectory of itself, '/usr/local/apache-tomcat-6.0.32/webapps/thatDir'
Ao executar o seguinte comando para substituir um thatDir existente em / webapps:
From /home/myUser/war_files/
mv thatDir /usr/local/apache-tomcat-6.0.32/webapps
Eu também tentei de tudo:
sudo mv /home/myUser/war_files/thatDir /usr/local/apache-tomcat-6.0.32/webapps
Sem sorte. Eu tenho as permissões necessárias para fazer isso (mais eu estou usando o sudo) e ainda nada. Essa mesma operação foi realizada antes por outra pessoa no meu escritório (que não está mais trabalhando aqui).
Eu tentei pesquisar e até vi outra pergunta no serverfault, mas todos dizem o mesmo que o comentário sobre o assunto: "talvez haja links simbólicos envolvidos e você não sabe disso".
Esse não é o problema. Eu tentei visualizar os diretórios com readlink -e (como o comentário no outro ticket sugere), mas não há links simbólicos envolvidos.
Qualquer ajuda seria apreciada.
Link para a outra pergunta relacionada a isso: Não é possível mover a pasta para um subdirectoy de si próprio - O que é acontecendo?
Como mencionado na minha resposta de comentários abaixo, veja as etapas para reproduzir esse problema. Como você poderá ver, os links não podem ser responsáveis por isso (também estou usando o bash unix):
mkdir /home/myUser/testOuter
cd /home/myUser/testOuter
mkdir test1
cd test1
mkdir moveMe
cd moveMe
touch testfile1.txt
cd ../..
mkdir test2
cd test2
mkdir moveMe
cd moveMe
touch testfile2.txt
cd ../../test1
mv moveMe ../test2
E então recebo a saída de erro:
mv: cannot move 'moveMe' to a subdirectory of itself, '../test2/moveMe'
mas claramente não está em um subdiretório de si mesmo, nem há links envolvidos.
Funciona se eu remover os arquivos de test2/moveMe/
, mas isso é inaceitável, pois preciso substituir todos os arquivos que estão no test1 com test2, preservar os arquivos existentes no test1 que não existem no test2 (como conteúdo gerado pelo usuário) , e mova em todos os arquivos do test2 que ainda não existem no test1. (ou seja, um tipo de operação de movimento regular, todos os dias).
Na verdade, lendo o que você está tentando fazer, provavelmente você está acertando esse bug onde alguém apontou que você recebe uma mensagem de erro incorreta ao tentar substituir um diretório não vazio por outro diretório (o que não é permitido).
Tags bash mv unix unix-shell