Иногда возникает необходимость скопировать все файлы настройки из домашней директории (так называемые дот-файлы, так как они начинаются с точки) куда нибуть в другую директорию или залить на другую систему. Казалось бы чего проще?
cp -r .* backup-dir
То есть
.* говорит "любое имя файла или директории начинающиеся с точки". Но тут есть подвох. Дело в том что в каждой директории есть две директории с именами
. и
.., что обозначает "текущая директория" и "родительская директория" соответсвенно.
cp -r .??* backup-dir
То есть
.??* говорит "любое имя файла или директории начинающиеся с точки и содержащая не меньше двух символов". Хотя конечно эта маска не охватывает файлы короче трех символов. Лично я часто пользуюсь этой маской, потому что она применима для большинства случаев и короткая Ж:-)
Спасибо darkk-у, подсказал правильную sh маску .[^.]*
Самая правильная маска для этого выглядит в zsh так:
cp -r .*~(.|..)(^@) backup-dir
.* "все файлы начинающиеся с точки"
~ "отрицание,все маски что идут после ~ не влючены в результат"
(.|..) "имя файлов . или .."
(^@) "не символические ссылки"
ну или еще более правильная для копирования дот-файлов из домашней директории
cp -r ${HOME}/.*~${HOME}/(.|..)(^@) backup-dir
PS
как это выглядит в bash?
Последние комментарии
5 часов 12 минут назад
5 часов 56 минут назад
6 часов 19 секунд назад
6 часов 25 минут назад
7 часов 8 минут назад
7 часов 39 минут назад
7 часов 44 минуты назад
1 день 3 часа назад
2 дня 6 часов назад
2 дня 17 часов назад