Как переместить папку в Unix с помощью mv, только когда цель находится на том же диске
10
Мне нужно переместить папку с помощью команды unix mv, но только если цель находится на том же диске или в той же файловой системе. Какой будет лучший подход?
Как вы думаете, он совместим с дистрибутивами Linux?
Просто для распространения лучшей практики используйте $(...)вместо `...`. Последнее не рекомендуется в пользу первого.
Шахбаз
Спасибо @Shahbaz, только что отредактировал его по вашей рекомендации!
Федорки
@zapp Я не знаю, должен проверить это. Мой опыт работы с statговорит мне, что это иногда сложно, по крайней мере с SunOS. Но, будучи Linux, я надеюсь, что он совместим. С моей Ubuntu 12 все нормально.
Федорки
это %dвыводит разные значения для разных директорий (даже для одного раздела) попробуйте с вашим /и/tmp
Кент
2
Вероятно, это не самое чистое решение, но вы могли бы использовать тот факт, что жесткие связи не могут быть созданы между дисками.
ln /path1/file /path2/file 2>/dev/null
if[[ $?==0]]then
rm /path1/file
fi
Ответы:
На основе Как проверить, принадлежат ли два каталога или файла к одной файловой системе ( /unix// ):
Так что вы можете:
а потом сравни.
Вы также можете написать так:
Другой вариант. Также взято из вопроса Stackexchange :
источник
$(...)
вместо`...`
. Последнее не рекомендуется в пользу первого.stat
говорит мне, что это иногда сложно, по крайней мере с SunOS. Но, будучи Linux, я надеюсь, что он совместим. С моей Ubuntu 12 все нормально.%d
выводит разные значения для разных директорий (даже для одного раздела) попробуйте с вашим/
и/tmp
Вероятно, это не самое чистое решение, но вы могли бы использовать тот факт, что жесткие связи не могут быть созданы между дисками.
источник