CentOS 5.x
Я прошу прощения, если это повторный вопрос. Я видел много похожих вопросов (относительно удаления файлов), но не совсем по тому же сценарию.
У меня есть каталог, содержащий сотни тысяч файлов (возможно, более миллиона), и в качестве краткосрочного решения другой проблемы мне нужно переместить эти файлы в другое место.
С целью обсуждения, скажем, эти файлы изначально находятся, /home/foo/bulk/
и я хочу переместить их в/home/foo2/bulk2/
Если я пытаюсь, mv /home/foo/bulk/* /home/foo2/bulk2/
я получаю ошибку «слишком много аргументов».
Г-н Гугл говорит мне, что альтернативой массового удаления файлов будет запуск поиска. Что-то вроде: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm
Это было бы хорошо, если бы я удалял материал, но в этом случае я хочу переместить файлы ... Если я наберу что-то вроде find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/
bash, то жалуется на то, что файл не является каталогом.
Какую команду лучше использовать здесь для массового перемещения файлов из одного каталога в другой?
Рассматривая
mv
родительский каталог вместо файлов:(Но это может вызвать проблемы, если
/home/foo/bulk
должно существовать в каждый момент.)источник
mkdir
? А что насчет этого режиссера, «существующего в каждый момент» или нет? Зачем это ускорять?mkdir
потому, что вся папка и все, что в ней находится, будут перемещены в другой каталог и больше не будут существовать в старом каталоге. Это гарантирует, что старый каталог все еще существует. Однако этого было бы недостаточно, если бы постоянно работала служба, которая зависела от первого всегда существующего каталога, потому что он перемещался, а затем создавался заново. Это не делает ничего быстрее, просто проще, предоставляя меньше аргументов.Просто для разнообразия, я люблю использовать cpio для некоторых подобных случаев.
источник
-print0
и-0
варианты.С GNU
mv
:В таких системах, как OS X, которые не имеют,
mv -t
но имеют-print0
иxargs -0
:Или, если имена файлов не содержат пробелов, кавычек, обратной косой черты или новых строк (с OS X
xargs
) или кавычек, обратной косой черты или новых строк (с GNUxargs
):источник
В течение указанного времени попробуйте следующее:
источник