Я пытаюсь переместить все подкаталоги папки в другой общий ресурс на том же сервере. Если я сделаю mv *, у меня закончится место, поскольку папки не будут удалены, пока все папки не будут перенесены. Поэтому я хотел бы создать короткий сценарий, который будет проходить через каждый из них. Есть ли у кого-нибудь пример, на который я могу посмотреть? Я искал, но не могу найти именно то, что ищу.
Вы могли бы использовать rsync(1)
:
rsync --remove-source-files /path/to/source /path/to/destination
Это удалит успешно переданные файлы из исходного пути.
Вы хотите for
.
Пример (это просто покажет, что будет сделано):
for item in *; do
echo mv "$item" /destination/directory
done
Когда вы счастливы, удалите echo
сделать это по-настоящему.
Используя mv
Команда для перемещения файлов с одного тома на другой - это операция копирования. Но как бы вам не хватило места на исходном томе? Вам не хватило бы места только на цель том, если этот том меньше, чем общий размер перемещаемых файлов. Но в любом случае вы только освобождаете пространство на исходном томе, а не выделяете на нем больше места.
Если вы используете mv
чтобы «переместить» файлы из одного каталога в другой на том же томе, это просто операция переименования. Вы не копируете данные, вы просто настраиваете указатели файлов, чтобы представить другую иерархию каталогов. Вы не собираетесь исчерпать пространство, потому что данные файла остаются там, где они были.
В любом случае, я не уверен, что вижу проблему. :-) Вы действительно пробовали это и у вас заканчивается место, или вы просто пытаетесь спланировать наперед?
ls -1 | xargs -n1 -i echo mv '{}' destination
Просто уберите эхо, когда будете счастливы.
Просто для справки, я считаю mv
команда не выполняет операцию копирования и удаления, т.е.
mv /home/foo /home/bar
существуют одновременно в течение короткого периода. Это больше похоже на переименование. Существенно изменить учет файловой системы, чтобы то, что указывало на /home/foo
теперь указывает на /home/bar
без фактического физического перемещения данных на диске из одного места в другое или без копирования и удаления из предыдущего места.