Я предлагаю использовать GNU grep:
echo abcdef | grep -Po '.(?=.{1}$)'
Вывод:
e
echo abcdef | grep -Po '.(?=.{3}$)'
Вывод:
c
То, что вы описываете, на самом деле ТРИ (3 )указателя на данные на диске:
Если вы mv A
переходите на новую файловую систему, по существу создается копия данных в новой файловой системе.
Если вы mv B
переходите на новую файловую систему, создается еще одна копия данных с именем B
в новой файловой системе. Но ABC по-прежнему остается в исходной файловой системе.
Что делать?если вы хотите реплицировать исходный файл и ссылки в новой файловой системе (, замените source/ и новый -файл -system/ на ваши правильные пути):
cp source/ABC new-file-system/ABC
ln new-file-system/ABC A
ln new-file-system/ABC B
rm source/ABC source/A source/B
При этом будут скопированы/созданы данные в новой файловой системе, созданы жесткие -ссылки A и B в новой файловой системе, а затем удалены старые данные и жесткие -ссылки.
Перед выполнением команды обязательно проверьте синтаксис, чтобы не потерять данные.
rsync
может скопировать для вас жесткие ссылки. Проверьте -H
опцию :
-H, --hard-links preserve hard links