Большинство двоичных файлов компилируется, чтобы быть установленным в определенные местоположения под /
.
Существуют некорневые диспетчеры пакетов как хинду Префикс и Беспочвенный GoboLinux и возможно 0install.
Поскольку Вы сказали, что компиляция себя облегчит ту проблему или использование chroot. Однако Ваше самое большое препятствие с chrooting будет предпосылками и соединением с общими объектами ядра.
Использование в своих интересах GNU mv
-t
опция указать целевой каталог, вместо того, чтобы полагаться на последний аргумент:
find . -name "*" -maxdepth 1 -exec mv -t /home/foo2/bulk2 {} +
Если бы Вы были в системе без опции, то Вы могли бы использовать промежуточную оболочку для получения аргументов в правильном порядке (find … -exec … +
не поддерживает помещающие дополнительные аргументы после списка файлов).
find . -name "*" -maxdepth 1 -exec sh -c 'mv "$@" "$0"' /home/foo2/bulk2 {} +
Рассмотреть mv
луг родительский каталог вместо файлов:
mv /home/foo/bulk /home/foo2/bulk2 && mkdir /home/foo/bulk
(Но это могло бы вызвать проблемы если /home/foo/bulk
должен существовать в каждый момент.)
Только для разнообразия, я люблю использование cpio для некоторых случаев как это.
find tmp |cpio -v -p --make-directories --sparse tmp2
-print0
и -0
опции.
– pabouk
28.11.2013, 11:11
В системах типа OS X, которые не имеют [1187621]mv -t[1187622], но имеют [1187623] -print0[1187624] и [1187625]xargs -0[1187626]:
Или если имена файлов не содержат пробелов, кавычек, обратных слэшей или новых строк (в OS X [1187627]xargs[1187628]) или кавычек, обратных слэшей или новых строк (в GNU [1187629]xargs[1187630]):
В течение определенного времени попробуйте следующее:
find . -name "*" -type f -mtime +7 -exec mv -t /folder/to/transfer/files {} +