"Arquivo mv" e agora está faltando

32

Em uma janela de terminal, digitei:

mv filename ..\..      [Note the wrong slash.]

Agora não consigo encontrá-lo. Se foi. Fiz algumas pesquisas e verifiquei os arquivos excluídos recuperáveis. Nada. Poof. Serve-me direito de usar uma máquina Windows imediatamente antes.

Alguém sabe para onde foi?

John
fonte
find / -iname thefilename -print talvez ?
Sergiy Kolodyazhnyy
@Serg Com thefilenameo nome original dos arquivos, esse findcomando não o encontrará sob o novo nome.
`` Eliah Kagan
Percebi isso logo após postar o comentário. Minha resposta inicial se um arquivo está faltando é usar achado, mas o que eu não sabia é que op renomeado o arquivo em vez de movê-lo
Sergiy Kolodyazhnyy

Respostas:

70

Não foi a lugar nenhum, está no diretório atual. Foi renomeado como ....(quatro pontos).

Como qualquer nome de arquivo com um nome .na frente é tratado como um arquivo oculto, ele fica oculto. Então, se você o fizer ls, não o encontrará. Como sempre, você precisa da opção -a(ou -A) lspara visualizar os arquivos ocultos, ou seja, ls -a(ou ls -A) para vê-lo.

Deixe-me detalhar, você correu mv filename ..\.., os dois primeiros pontos significariam o diretório pai, se fosse ../, mas você usou barra invertida ..\que indica shell para escapar do próximo caractere, mas um ponto .não tem significado especial para shell. Portanto, ele será tratado como um literal .e o último .também será adicionado, então você terá quatro pontos ....como nome de arquivo.

Para voltar ao nome anterior (original), execute mv .... filename.

heemail
fonte
2
Hahaha ... nunca me ocorreu. Aí está: "....". Obrigado! Eu acho que interpretou o primeiro ponto como o ponto .hideme.
John John
2
Posso sugerir la -A(com A maiúsculo). Faz o mesmo que ls -amas exclui .e ...
Paddy Landau
13

Execute mv .... filenamepara renomeá-lo novamente. ( mv ..\.. filenamefuncionaria também, mas \é supérfluo - como estava no seu comando original.)

  • O arquivo não foi excluído, e é por isso que a busca por arquivos excluídos recuperáveis ​​não o encontrou.
  • Como no Windows, .e as ..entradas estão presentes em todos os diretórios e referem-se aos diretórios "atual" e "pai", respectivamente. Mas, diferentemente do Windows, seqüências de mais de dois pontos não têm significado especial. Embora seja incomum, você é perfeitamente livre para nomear um arquivo comum com um nome composto inteiramente por pontos, desde que tenha pelo menos três pontos.
  • Diferentemente do Windows, no Ubuntu, o shell usa \como caractere de escape, garantindo que ele trate o seguinte caractere literalmente, em vez de lhe dar um significado especial. O .personagem não tem significado especial no shell (em particular, o shell não é o responsável por fazer com que as entradas .e ..funcionem). Portanto, em seu comando, \.era equivalente a ..
  • Como heemayl diz , por padrão a maioria dos utilitários não mostra arquivos e diretórios cujos nomes começam com a .. Desde o ....início ., a execução lssem o sinalizador -Aou -anão o revelou.
Eliah Kagan
fonte
1
Foi exatamente assim que eu achei. Fiquei me perguntando por que meu "\" não agia como uma fuga, mas sim, nada para escapar tão tratado normalmente. Faz sentido.
John
5

ainda está no mesmo diretório, apenas um arquivo 'oculto' agora. Você pode recuperá-lo "mv .... filename".

Bruce
fonte