Расположение файлов после ошибочной команды переименования

Расположение файлов после ошибочной команды переименования

Новичок... только что попытался изменить имя файла, в котором было 2 точки, на одну точку, используя

rename 's/.././' filename

Файл исчез, но я не думаю, что он был удален, так как в памяти осталось столько же места. Куда мог быть отправлен этот файл?

решение1

Файл называется .lenameсейчас.

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

Это потому, что точка в регулярном выражении — этоособый персонажзначениесопоставьте любой символ. Так, ..это любые два символа. As renameзаменяет только первое совпадение, если вы не добавилиГлобальныймодификатор ( g), первые два символа указанного вами имени файла были заменены.

Обратите внимание, что «замена» вs/regex/replacement/modifiersне является регулярным выражением, поэтому .выражение справа s/.././работает так, как вы и ожидали.


Итак, где находится ваш файл:

Файлы, начинающиеся с a, .являются скрытыми. Таким образом, вы не увидите их, запустив ls. Запустите, ls -aчтобы открыть эти файлы.

Переименуйте файл обратно, используяmv .lename filename


В следующий раз экранируйте символы, которые являются специальными для регулярных выражений:

rename 's/\.\././' filename

Также вы могли бы использовать rename -n ...для пробного запуска и проверки результатов перед выполнением фактического переименования. Это показало бы вам что-то вроде этого:

rename(filename, .lename)

Связанный контент