Acabo de perder una pequeña parte de mi colección de audio, por un estúpido error que cometí. :-(
DIVERTIDO Tenía una copia de seguridad bastante reciente, pero aún así era irritante. Aparte de la suya, el otro culpable que hizo la travesura fue mv, que se mostrará de la siguiente manera:
Los archivos de audio tenían un cierto esquema:
ARTIST - Some Title YY.mp3
donde YYes la especificación año de 2 dígitos.
mkdir 90<invisible control character>
(¡Hasta este momento, no sabía que había escrito un tercer carácter en exceso que era invisible ...!)
En lugar de tener todo en un directorio, quería tener toda la música de los 90 en un solo directorio. Entonces escribí:
find . -name '* 9?.mp3' -exec mv {} 90 \;
No es tan difícil de conseguir la idea de lo que sucedió eh? : ->
El (desastroso) resultado fue una virgen vacío directorio llamado '90 algo '(con algo de ser el carácter de control 'invisible') y un solo archivo llamado '90', sobrescritos n veces.
TODOS LOS ARCHIVOS habían desaparecido. : - (((obviamente)
Wish mvhubiera verificado a tiempo si la firma del "archivo" de destino (recuerde en * NIX: Everything Is A File ) comienza con un d------(por ejemplo drwxr-xr-x). Y, por supuesto, si el destino existe en absoluto. Hay una variante del escenario antes mencionado, en las que simplemente se olvidó de mkdirla guía en primer lugar. (pero por supuesto, asumiste que está ahí ...)
Incluso nuestra mascota OS-odio empezando por la capital W hace este. Incluso se le solicita que especifique el tipo de destino (¿archivo? ¿Directorio?) Si lo solicita.
Por lo tanto, me pregunto si nosotros * NIXers todavía tenemos que escribirnos un " mvscriptlet" solo para evitar este tipo de sorpresas no deseadas.
mvno es el problema aquí, técnicamente, no sabe que usted está en movimiento una serie de archivos. Está ejecutando mvuna vez para cada archivo. Así es como find -exec ;funciona. Si lo hubiera usado find -exec +(como en algunos de los comentarios) mv habría gritado tan pronto como recibiera más de un argumento.
mvde cada archivo puede parecer un poco menos pensada al principio, será (como dije anteriormente) la única solución sensata una vez que los archivos de origen estén dispersos entre varios subdirectorios. Que en mi caso de prueba, los archivos de origen estaban todos en un directorio no significa que sea mi caso de prueba real . Es, de hecho, sólo una simplificación, porque puede elaborar fácilmente en que por mi cuenta más adelante. Además, se hace preguntas menos tiempo para leer debido a su longitud reducida. :)
mvrequerir que exista el destino? mv oldfile newfilees la forma de cambiar el nombre de un archivo, y es una tontería esperar newfileque ya exista y sea un directorio.
.mp3debería estar allí con el nombre90, podría haber sido uno para el que no tenía una copia de seguridad.