Команда Linux для перемещения каталога - PullRequest
25 голосов
/ 15 мая 2009

В моем старом и новом каталоге находятся одинаковые папки и файлы.

Я пытаюсь:

mv -if old/* new/*

и получите ошибку

mv: не может переместить `./xxxxxx 'в свой подкаталог

Как мне его переместить?

Ответы [ 5 ]

30 голосов
/ 15 мая 2009

Вы должны использовать mv -if old/* new/ без трейлинга *.

Это потому, что он развернут до

mv -if old/foo old/bar old/baz new/foo new/bar new/baz

т.е. переместить все в новое / baz

Это не то, что вы хотели.

5 голосов
/ 16 мая 2009
reef@localhost:/tmp/experiment$ ls a
11  22  33
reef@localhost:/tmp/experiment$ ls b
22  33
reef@localhost:/tmp/experiment$ ls
a  b
reef@localhost:/tmp/experiment$ mv a/* b
reef@localhost:/tmp/experiment$ ls a
reef@localhost:/tmp/experiment$ ls b
11  22  33

Это работает. Чего Ты пытаешься достичь? Не могли бы вы написать краткий пример того, как должны выглядеть входные данные и как должны выглядеть выходные данные? Правда в том, что я понятия не имею, что Вы пытаетесь сделать :) Помогите мне помочь Вам.

3 голосов
/ 04 апреля 2013

обратите внимание, что mv a / * b / не перемещать файлы. * (Имя файла начинается с '.') В a / to b /

например:

$ mkdir -p a/d b && touch a/f a/.f a/d/.f
$ mv a/* b/
$ ls -a a/
.  ..  .f
1 голос
/ 11 декабря 2012

Может быть, вы получили ответ, но ответ выше не работает для меня .... и, наконец, много исследований, я получил ответ. (Проблема связана с владением файлами)
и просто поставьте sudo перед командой и она работает .... :) То же самое для команд cp и mv.

sudo mv -if old/* new/
1 голос
/ 14 июня 2010

Если вы копируете из файловой системы ext2 / 3/4 в файловую систему FAT32, а имя файла содержит недопустимый символ для соглашений об именах FAT32, вы получите это ужасно раздражающее и некорректное сообщение об ошибке. Откуда мне знать? Я боролся с этой ошибкой - да, это КЕРНЕЛ БАГ - за 6 часов до того, как меня осенило. Я думал, что это ошибка интерпретатора оболочки, я думал, что это ошибка "mv" - я пробовал несколько разных оболочек, все. Попробуйте этот эксперимент: в файловой системе ext «прикоснитесь» a: b к «mv» к файловой системе FAT32. Попробуйте, вы будете наслаждаться (ненавидеть) результаты. То же самое верно для '<' и '>' (\ 074 и \ 076).

Спасибо за "man mv" - это действительно большая помощь, не бросайте свою дневную работу.

...