Linux mv команда перенесла данные в неизвестное место?

11

Я случайно выполнил эту команду в SSH:

mv /var/www/vhosts/website/httpdocs/magento/*

Теперь все данные в magento dir исчезли. Кто-нибудь знает, куда он переехал?

Благодарность!

rdrb-3
источник
Для того, чтобы автоматически определить , в каком каталоге ваши данные пошли , и если вы используете Bash, сделать это: a=( /var/www/vhosts/website/httpdocs/magento/* ); echo "${a[${#a[@]}-1]}". Если не в Bash, это должно работать: printf '%s\n' /var/www/vhosts/website/httpdocs/magento/* | tail -1. Иначе, это очень вероятно в последнем каталоге, в алфавитном порядке. Выполнено.
gniourf_gniourf

Ответы:

20

Если в алфавитном порядке последняя запись в этом каталоге является самим каталогом, они есть.

Предположим , у вас есть файлы a, bа cи каталог d. В таком случае,

mv /var/www/vhosts/website/httpdocs/magento/*

расширяется до

mv /var/www/vhosts/website/httpdocs/magento/a /var/www/vhosts/website/httpdocs/magento/b /var/www/vhosts/website/httpdocs/magento/c /var/www/vhosts/website/httpdocs/magento/d

которая является командой для перемещения всего d. Посмотрите там, если есть что-нибудь.

Если бы dне было справочника, mvследовало бы пожаловаться на это.

glglgl
источник
1
+1: посмотрите подкаталоги в / var / www / vhosts / website / httpdocs / magento / * dir. Подсказка: subdir по- прежнему находится в magento dir, так что это должно быть легко, так как почти все остальное теперь должно быть под ним, следовательно, должен быть только один dir (не считая тех, которые начинаются с '.'). Введите этот subdir и "mv * ..". Однако это может переместить вещи, которые ранее находились под этим каталогом, поэтому вам придется вернуть их обратно. + любой файл, имя которого совпадает с именем файла magento / *, будет перезаписан (если ваш mv не имеет псевдонима mv -i)
Оливье Дюлак
2
аккуратный трюк с mv *: mkdir zzz; mv *который переместит все содержимое текущего каталога в каталог zzz. Просто убедитесь, что у вас нет файлов, которые сортируются лексографически после zzz.
2

Чтобы расширить ответ glglgl:

Подстановочный знак командной строки в Unix-подобных операционных системах выполняется оболочкой. В большинстве случаев с Linux это было бы bash. На его странице руководства прямо указано, что расширение по шаблону будет отсортировано по алфавиту. То же самое должно быть справедливо для большинства Bourne-совместимых оболочек.

pabouk
источник
Наверное, не только большинство, но и все. В противном случае отсутствует совместимость.
glglgl