Eu acidentalmente coloquei um espaço no meu caminho e movi muitos arquivos - onde eles estão?

0

Eu usei o seguinte código para mover muitos arquivos:

sourceDIR=/Volumes/MCOOPER/data
destDIR=/Volumes/MCOOPER2 /data
for i in {1..6000}
do
mv $sourceDIR/run$i.mat $destDIR/
done

Agora todos os meus arquivos sumiram. Existe alguma maneira de recuperá-los? Muito obrigado.

    
por mr. cooper 20.05.2014 / 04:46

1 resposta

0

Observe que sua definição de destDIR não define seu valor; ele apenas tenta executar o programa /data com esse conjunto de variáveis. Como /data não nomeia um programa, nada significativo acontece.

Vendo, então, como $destDIR é indefinido, sua linha de comando mv reduz para algo assim:

mv /Volumes/MCOOPER/data/run10.mat /

Parece razoável assumir, então, que seus arquivos foram movidos para o diretório raiz. Você checou lá?

Além disso, como conselho geral, há pelo menos três coisas que você pode criar o hábito de evitar acidentes como este no futuro:

  • Sempre cite suas expansões de parâmetro, a menos que você explicite queira que elas sejam divididas: mv "$sourceDIR/run$i.mat" "$destDIR"
  • A menos que você saiba explicitamente que deseja substituir arquivos, execute mv com a opção -i para evitar a substituição acidental.
  • Quando você sabe que deseja mover as coisas para um diretório, é útil colocar uma barra final no nome do diretório como uma proteção contra a renomeação acidental do (s) arquivo (s). Ou seja: destDIR=/Volumes/MCOOPER2/data/

Além disso, você pode ou não, dependendo de suas circunstâncias, querer executar set -e , para fazer com que o shell saia assim que qualquer comando falhar, em vez de prosseguir com comandos subseqüentes.

    
por 20.05.2014 / 04:50

Tags