Подтвердить что ты не робот

Команда Linux для перемещения каталога

У моего старого и нового каталога есть те же папки и файлы внутри.

Я пытаюсь:

mv -if old/* new/*

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

[email protected]:/tmp/experiment$ ls a
11  22  33
[email protected]:/tmp/experiment$ ls b
22  33
[email protected]:/tmp/experiment$ ls
a  b
[email protected]:/tmp/experiment$ mv a/* b
[email protected]:/tmp/experiment$ ls a
[email protected]:/tmp/experiment$ ls b
11  22  33

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

Ответ 3

обратите внимание, что 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

Ответ 4

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

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

Ответ 5

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

sudo mv -if old/* new/