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

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

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

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

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 .

  • находить и копировать файлы, используя список входных данных и частичные пути к файлам
  • Почему я не могу копировать символические ссылки?
  • Как скопировать список файлов и настроить имена файлов назначения на лету?
  • Как создать копию файла в нескольких каталогах?
  • cp говорит «тот же файл» для двух разных каталогов
  • Совместное использование дерева проектов между средами
  • Являются ли cp -r и cp -R одинаковыми?
  • Синтаксические различия в cp -r и способы их преодоления
  • Как добавить дату в файл резервной копии
  • сохранение расширенных атрибутов cp / rsync
  • копировать имена файлов со специальными символами на внешний том ntfs
  • Как предотвратить cp от слияния двух одинаково названных каталогов?
  • Interesting Posts

    удалять дубликаты на основе значения другого столбца

    Инструмент для преобразования произвольных MIME-писем в обычный текст? (лучшее усилие)

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

    перенаправление и вывод журнала

    Как найти все файлы, содержащие определенную строку, рекурсивно на BusyBox 1.4.2?

    Каковы наилучшие инструменты программирования общего назначения в дополнение к Vim?

    Режим управления системой во встроенных системах

    Перекосы часов на удаленных машинах

    не удается найти libarchive при компиляции пролога YAP в OSX

    Как вы уменьшаете количество пакетов в архиве?

    Vim colorscheme background, не заполняющий терминал

    Создание новой виртуальной машины SLES 12 на XenServer 6.5 не выполняется

    Написание сценария, который выводит локальных пользователей и срок их действия

    Отключить Gnome при загрузке в Antergos

    Bash: Имея 2 файла, как я могу проверить, появляется ли второе имя в первом случае во втором

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