Pregunta

A menudo hago el comando como:

mv folder $something_that_does_not_exist
mv files* $something_that_does_not_exist

Entonces, me doy cuenta de que mis archivos se han ido. No puedo verlos incluso en la carpeta " $ something_that_does_not_exist " ;. ¿Dónde se han ido mis archivos y carpetas? ¿Cómo puedo recuperarlos?

¿Fue útil?

Solución

Para evitar este problema, tengo la costumbre de agregar siempre un / al final de los nombres de directorio cuando utilizo cp o mv :

$ touch foo
$ mv foo bar/
mv: cannot move `foo' to `bar/foo': No such file or directory

Sin la barra diagonal final, mv realiza una operación de cambio de nombre de archivo. Es posible que sus archivos hayan cambiado de nombre.

Otros consejos

Si $ something_that_does_not_exist se expande a nada (pero no estoy seguro si ese es su problema?) entonces el primer mv fallará. El segundo comando mv también fallará a menos que " archivos * " se expanda exactamente a dos archivos o si el último nombre de archivo " archivos * " se expande a ser un directorio Luego, los archivos se moverán a ese directorio.

Si el comando está en un script y desea que su script se cancele al intentar expandir la variable y no está configurado, puede usar el modificador de signo de interrogación. Ejemplo:

$ echo ${DISPLAY?}; echo display
:0.0
display
$ echo ${MYTEST?}; echo mytest
bash: MYTEST: parameter null or not set
$

Entonces, si usas

mv folder ${something_that_does_not_exist?}

y something_that_do___exist no está configurado, los siguientes comandos no se ejecutarán.

No podrá recuperar sus archivos, ya que el shell expandirá sus archivos y creo que el último archivo de la lista ahora se llamará $ something_that_does_not_exist.

Todos los demás archivos de la lista se habrán sobrescrito. Entonces no puedes recuperarlos.

EDITAR: En mi máquina virtual de smoothwall (¡el único GNU / Linux en mis dedos ahora mismo!) obtengo esto:

$ mkdir t1
$ mv t1 t2
$ ls
t2/
$ mv t2 t1
$ cd t1
$ touch f1 f2 f3 f4
$ mv f* ../t2
mv: target `../t2' is not a directory
mv folder $something_that_does_not_exist

Esto debería ser un error:

$ mkdir folder
$ mv folder
mv: Insufficient arguments (1)
Usage: mv [-f] [-i] f1 f2
       mv [-f] [-i] f1 ... fn d1
       mv [-f] [-i] d1 d2

El otro caso depende de qué archivos * coinciden:

mv files* $something_that_does_not_exist

Si la coincidencia final es un directorio, es probable que encuentre sus archivos allí. De lo contrario, habrá cambiado el nombre del primer archivo para que sea el mismo que el segundo o ha tenido otro error como el anterior.

1) Intenta mover el directorio " carpeta " ;:

mv folder abcde

Si " abcde " es un directorio existente, se moverá " carpeta " en "abcde". Si " abcde " es un archivo existente, el comando fallará. De lo contrario, cambiará el nombre de " carpeta " a "abcde".

2) Intenta mover algunos archivos:

mv files* abcde

Si " abcde " es un directorio existente, moverá los " archivos * " en "abcde". De lo contrario, si solo hay un archivo que coincida con "archivos *", cambiará el nombre de ese archivo a "abcde". De lo contrario, el comando fallará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top