Есть ли простой способ рекурсивного копирования всех скрытых файлов в каталоге в другой каталог? Я хотел бы сделать резервную копию только всех файлов настроек в домашнем каталоге, а не обычных файлов. Я старался:
cp -R .* directory
но он распознает .
и ..
и рекурсивно копирует все не скрытые файлы тоже. Есть ли способ заставить cp игнорировать .
и ..
?
-r
и-R
?Ответы:
Моим любимым ходом режиссеров вообще было:
который подключает текущий каталог к стандартному выводу, а затем направляет его в подоболочку, которая сначала переписывает компакт-диск в конечный каталог перед тем, как распаковать стандартный ввод. Простой, прямой, расширяемый - подумайте, что происходит, когда вы заменяете () ssh на другой компьютер. Или, чтобы ответить на ваш вопрос, вы можете сделать:
источник
cd /dest/dir && tar xvf -
.&&
Остановит вас от blatting по каталогу источника , если у вас есть опечатка в пункте назначения. 2) Вам нужен толькоv
флаг tar для одной из команд tar (или ни одной).(cd /src/dir && tar cf - .) | tar xvf -
Почти каждый раз, когда это можно решить просто с помощью:
Довольно необычно иметь скрытый файл, который не начинается с одного из этих символов.
Другие сопоставления с образцами доступны (
.??*
,.[^.]*
) - см. Комментарииисточник
Вы могли бы использовать
rsync
.который скопирует содержимое текущего каталога (включая точечные файлы, но не включая
..
)источник
.git
каталоги. Добавление -C делает это, и поэтому команда становится:rsync -aC ./ /some/other/directory/
Я умоляю вас, шаг от простого расширения оболочки в
cp
командной строке - оболочка расширение имеет все виды гм . «Интересных» угловые случаи (нежелательных рекурсию , вызванные и .., пробела, непечатаемые вещи, жесткие ссылки, символические ссылки, и и т. д.) Используйтеfind
вместо этого (он входит вfindutils
пакет, если он у вас не установлен - что было бы странно, все дистрибутивы устанавливают его по умолчанию):Пошаговое объяснение:
Итак, на простом английском языке эта
find
командная строка говорит следующее:источник
Я всегда использовал. ?? *, чтобы найти скрытые файлы, не получая "." и "..". Это может пропустить ".a" или что-то, хотя, но у меня никогда не было одного из них.
источник
Гораздо лучшие ответы здесь; /superuser/61611/how-to-copy-with-cp-to-include-hidden-files-and-hidden-directories-and-their-con
Это описывает, например, использование Shopt для нативного решения Bash
источник