Рейтинг:3

все файлы в папке исчезли из-за опечатки при использовании `mv`

флаг jp

Я новичок в bash, и я пытался переименовать все файлы в каталоге в их контрольную сумму md5 следующим образом.

р@р:~г$ ш
$ для F в *; делать
> mv "$F" "$(md5sum "$i")"
> сделано
р@р:~/g$ лс
'd458d56dd4ab8c2b335da66e0bcab924 nRUNO5wt3JRN3pBt.mp4'

Я сделал опечатку и строку mv "$F" "$(md5sum "$i")" должно быть mv "$F" "$(md5sum "$F")" если я не ошибаюсь. Теперь все файлы в папке отсутствуют, кроме одного.

Файлы удалены или куда-то перемещены? Есть ли способ их восстановить?

При попытке воспроизвести ситуацию в папке с файлом "1.png" в ней происходит следующее.

р@р:~/a$ ш
$ для F в *; делать
> mv "$F" "$(md5sum "$i")"
> сделано
md5sum: '': Нет такого файла или каталога
mv: невозможно переместить '1.png' в '': нет такого файла или каталога
флаг cn
Если у вас нет резервной копии, эти файлы не могут быть восстановлены. Каждый файл перезаписывался последующим, оставляя только последний.
Рейтинг:5
флаг it

Возможно нет. Подумайте, как «работает» ваш цикл и какой мв команды выполняются.

Для первого файла вы выполнили

mv the_file "$(md5sum $i)"

но с тех пор "$(md5sum "$i")" НЕ изменяется по мере выполнения цикла, команда для следующего файла:

mv the_2nd_file "$(md5sum "$i")"

замена первого файла. Первый файл удаляется, а его блоки на диске помечаются как «свободные».

То же самое происходит с файлами с 3-го по N-й. Остался только ПОСЛЕДНИЙ файл, который теперь называется "$(md5sum "$i")".

У вас есть резервные копии?

При написании мощных/опасных команд для применения к группе файлов используйте эхо:

для f в * ; делать
 echo mv $f "$(md5sum "$i")"
сделано

показал бы вашу ошибку.

Кстати, имена переменных [A-Z] в верхнем регистре традиционно используются для связи с приложениями. Если вы используете строчные буквы [a-z] в своих сценариях, вы никогда не будете перекрываться.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.