Arquivo existe, mas mv erros com: "mv: não pode stat 'file.tar.gz': Nenhum arquivo ou diretório"

2

Estou criando um script no Centos 7 para mover o arquivo mais recente em um diretório para outro diretório. O diretório original do qual estou copiando contém um arquivo válido, no entanto, quando tento mover ou copiar o arquivo, ele comete erros dizendo que o arquivo não existe. Eu sei que o arquivo existe como eu provo abaixo. Por que isso falha e o que eu posso fazer para consertar isso?

Se eu executar esta linha do meu script no shell, o $( expandirá a saída para a variável conforme o esperado:

NEW=$(ls -Art /home/user/directory/ | tail -1)

Eu posso provar isso para mim mesmo estar ecoando o valor da variável da seguinte forma:
echo $ NEW

file.tar.gz

Então, tento mover o arquivo para um diretório diferente:

mv $NEW /usr/local/directory/

.. e é aqui que recebo o erro. Observe que a mensagem de erro nomeia explicitamente o arquivo que não pode encontrar:

mv: cannot stat ‘file.tar.gz’: No such file or directory

O shell parece estar me dizendo que não pode encontrar o arquivo e, em seguida, nomear o arquivo que não pode encontrar.

Eu tentei substituir os backticks por parênteses, mas com o mesmo resultado. Eu tentei alterar as permissões do arquivo e dos diretórios acima para praticamente todas as permutações em que eu posso pensar e também alterei a propriedade para user.user

Eu tentei executar o comando como root e user, mesmo resultado a cada vez. Eu apreciarei qualquer tentativa de ajudar a resolver isso.

    
por Nik-Nak 12.08.2015 / 15:56

2 respostas

6

Parece que você não está no diretório onde o arquivo está.

Você usa

 ls -Art /home/user/directory/    

que retornam para NEW apenas a parte do nome do arquivo, não a parte do diretório.

Seu comando de movimento deve ser

mv /home/user/directory/$NEW  /usr/local/directory/
    
por 12.08.2015 / 16:03
2

Alternativamente,

NEW="/home/user/directory/"'ls -Art /home/user/directory/ | tail -1'

Então, o seu comando mv , como de costume.

mv $NEW /usr/local/directory/
    
por 12.08.2015 / 16:43

Tags