Есть ли опция -parents для mv, как для cp?

cp имеет полезную функцию --parents которая позволяет скопировать структуру каталогов файла в другой каталог:

 $ cp -v --parents source/directory/from target/ 'source/directory/from' -> 'target/source/directory/from' 

Как мне аналогичным образом перемещать файл?

  • перемещать файлы в цикле
  • Как скопировать каталог рекурсивно с помощью hardlinks для каждого файла
  • Копирование лент данных на диск
  • Независимый от оболочки путь к cp dotfiles из папки в другую
  • Как мне скопировать папку, а не только содержимое папки?
  • рекурсивно копировать только изображения и сохранять путь
  • Rsync, cp или любая утилита добавляют специальные отфильтрованные данные из исходного файла в анализируемый файл
  • Скопируйте вложенную структуру каталогов, игнорируя все каталоги определенного имени
  • 2 Solutions collect form web for “Есть ли опция -parents для mv, как для cp?”

    Не напрямую, по крайней мере, не для GNU mv соответствии со своей страницей . Возможным обходным решением будет добавление такой функции:

     pmv(){ source=$1; target=$2; mkdir -p "$target"/"$(dirname $source)" mv "$source" "$target"/"$(dirname $source)"/ } 

    Добавьте эту функцию в конфигурационный файл вашей оболочки ( ~/.bashrc если вы используете bash) и выполните его следующим образом:

     pmv source/directory/from target/ 

    Есть ли способ переместить файл аналогичным образом?

    Нет . mv – довольно простая утилита, которая по возможности использует rename системного вызова (операция атомарного FS), когда источник / место назначения находятся на одном блочном устройстве, в противном случае он возвращается к cp поведению. На самом деле rename завершится неудачно, даже если вы src / dst – это одно и то же устройство, смонтированное на разных точках подключения, которые Linux разрешает.

    Поэтому, когда вам нужно переместить файлы, например:

     cp -v --parents source/directory/from target/ 

    вы можете просто подумать:

     mv source target/ 

    но имейте в виду, что это переместило бы весь контент, который все родительские директории могли бы иметь внутри, так что вам придется иметь дело с этим позже – я имею в виду разблокировать все эти дополнительные файлы, если вам нужно иметь тот же результат, что и cp --parents .

    Рано или поздно вы поймете, что то, что вы делаете, может быть легко достигнуто с помощью подхода cp / rm . И cp 's -l можно использовать, чтобы заставить его работать быстро, тем временем позволяя использовать любимые --parents . Именно по этой причине у mv не было бы ничего такого воображения, как cp 's --parents .

    Interesting Posts

    Есть ли Linux-ОС, которая может быть полностью загружена в оперативную память?

    Используя мост, контейнер LXC не может выполнять ping-маршрутизатор, но ОС хоста может

    Исполняемый файл не создан в / usr / bin. Как запустить приложение?

    вызов javac из CentOS 7

    Какие команды необходимы в файле '~ / .vnc / xstartup' для запуска KDE Plasma 5 в VNC?

    Как ath9k представился Mac80211?

    Простой тест с плавающей точкой, который может быть скомпилирован из источника?

    Как установить темы в корицу?

    Macbook Ubuntu Server: как я могу отключить экран, когда крышка закрыта (но не работает сервер)?

    Могу ли я сделать так, чтобы все новые пользователи, созданные в будущем, по умолчанию имели истекший пароль?

    После сбоя e2fsck терпит неудачу с необычно высокими номерами блоков / размерами

    Как было создано ntfs-3g?

    Как автоматически обнаружить Linux, если ядро ​​должно загрузиться на dev hdc или hda

    К какой группе процессов относится моя программа, когда она начинается с bash?

    Включить Alt + Ctrl + t, чтобы открыть терминал в LXDE

    Linux и Unix - лучшая ОС в мире.