Cómo mover la carpeta en unix usando mv, solo cuando el destino está en la misma unidad
10
Necesito mover una carpeta usando el comando unix mv, pero solo si el objetivo está en la misma unidad o en el mismo sistema de archivos. ¿Cuál sería el mejor enfoque?
¿Crees que es compatible con las distribuciones de Linux?
Solo por difundir la mejor práctica, use en $(...)lugar de `...`. El último está en desuso a favor del primero.
Shahbaz
Gracias @Shahbaz, ¡acabo de editarlo con tu recomendación!
fedorqui
@zapp No lo sé, debería probarlo. Mi experiencia con statme dice que a veces es complicado, al menos con SunOS. Pero siendo Linux espero que sea compatible. Con mi Ubuntu 12 está bien.
fedorqui
esto %dproduce diferentes valores para diferentes directorios (incluso la misma partición) intente con su /y/tmp
Kent
2
Probablemente esta no sea la solución más limpia, pero podría usar el hecho de que no se pueden crear enlaces duros entre unidades.
ln /path1/file /path2/file 2>/dev/null
if[[ $?==0]]then
rm /path1/file
fi
Respuestas:
Basado en Cómo verificar si dos directorios o archivos pertenecen al mismo sistema de archivos ( /unix// ):
Así que puedes:
y luego comparar.
También puedes escribir así:
Otra opción. También tomado de la pregunta de Stackexchange :
fuente
$(...)
lugar de`...`
. El último está en desuso a favor del primero.stat
me dice que a veces es complicado, al menos con SunOS. Pero siendo Linux espero que sea compatible. Con mi Ubuntu 12 está bien.%d
produce diferentes valores para diferentes directorios (incluso la misma partición) intente con su/
y/tmp
Probablemente esta no sea la solución más limpia, pero podría usar el hecho de que no se pueden crear enlaces duros entre unidades.
fuente