Я случайно скопировал часть каталога / * to / some /, как мне исправить мою ошибку?

Я сделал что-то глупое на удаленном сервере linux:

  1. мой рабочий каталог был /some/directory
  2. Я побежал for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done
  3. Теперь /some/directory/my_subdirectory содержит такие вещи, как bin boot dev и home , которые определенно не должны быть там

Не стесняйтесь указать, насколько глупыми были # 2. Если я правильно понял свою ошибку, $d был пуст (я хотел набрать $dir – возможно, даже с этим исправлением это была бы плохо обработанная команда, но я должен закрыть эту скобку), поэтому в основном команда, которую я запускал, была mv /* ./my_subdirectory .

Когда я понял, что сделал, я нажму ctrl-c ctrl-c, поэтому команда была прервана до того, как она закончилась.

Мой вопрос состоит из двух частей: во-первых, что я должен сделать, чтобы исправить это; и, во-вторых, моя команда действительно переместила вещи из / , или просто скопировала их?

Я запускал mv , я бы ожидал, что он переместит вещи, и все же я ничего не вижу под ./my_subdirectory отсутствующим в / . Дайте мне знать, если я буду неясно здесь. Например, /some/directory/my_subdirectory/bin содержит bash, cat, mount и mkdir, но эти программы все еще присутствуют в /bin , как если бы они были скопированы и не перемещены. Почему это? Могу ли я безопасно удалить все под /some/directory/my_subdirectory , или это будет ужасная ошибка?


Следуя предложению tad в комментариях, вот некоторые из результатов find ./my_subdirectory -type f :

 ./my_subdirectory/bin/umount ./my_subdirectory/bin/date ./my_subdirectory/bin/sort ./my_subdirectory/bin/red ./my_subdirectory/bin/dumpkeys ./my_subdirectory/bin/sleep ./my_subdirectory/bin/readlink ./my_subdirectory/bin/mv ... ./my_subdirectory/etc/security/pam_env.conf ./my_subdirectory/etc/security/chroot.conf ./my_subdirectory/etc/security/access.conf ./my_subdirectory/etc/security/namespace.init ./my_subdirectory/etc/security/group.conf ./my_subdirectory/etc/security/console.handlers 

Я проверил, и эти файлы все еще существуют под /etc и /bin . Когда я запускаю diff ./my_subdirectory/etc /etc я получаю общие подкаталоги, некоторые из которых находятся только в /etc , но ничего, что только в ./my_subdirectory/etc . Кажется, что вещи скопировали, а не переместили. Этого следует ожидать, учитывая, что я не запускал команду mv как sudo?

One Solution collect form web for “Я случайно скопировал часть каталога / * to / some /, как мне исправить мою ошибку?”

Предполагая, что вы не выполнили эту команду как root, я бы предположил, что данные были просто скопированы. Одним быстрым способом было бы запустить diff для сравнения каталогов.

  • Удалить неизвестный символ юникода из textfiles - sed, другие методы bash / shell
  • Получить список из 3 буквенных команд в Mac OS X
  • команда tar - пропустить символические ссылки
  • Как вы получаете первый файл в каждом подкаталоге, соответствующем списку расширений файлов?
  • Каков наилучший способ подсчета количества файлов в каталоге?
  • Использовать все хосты, завершенные zsh для cssh
  • ls: Не показывать каталоги, которые соответствуют одному шаблону в подстановочных поисках, только файлы
  • хранить последний файл каждого месяца и удалять остальные
  • Как сопоставить нечувствительные к регистру шаблоны с ls?
  • Чтение каталога в сценарии оболочки
  • Как извлечь все файлы .htaccess из tarball?
  • Linux и Unix - лучшая ОС в мире.