В Bash мне нужно сделать это:
взять все файлы в каталоге
скопировать их в существующий каталог
Как мне это сделать? Я пытался cp -r t1 t2
(и t1, и t2 - существующие каталоги, в t1 есть файлы), но он создал каталог с именем t1 внутри t2, я не хочу этого, мне нужны файлы в t1, чтобы перейти непосредственно в t2. Как мне это сделать?
cp
вопросы можно рассматривать какbash
вопросы, то есть язык программирования. Я никогда не видел, чтобы вопрос Python о копировании файла был закрыт.Ответы:
То, что вы хотите, это:
Точка в конце говорит ему скопировать содержимое текущего каталога, а не самого каталога. Этот метод также включает скрытые файлы и папки.
источник
mv
. Кто-нибудь знает почему?Если вы хотите скопировать что-либо из одного каталога в текущий каталог, сделайте это:
Это предполагает, что вы не пытаетесь копировать скрытые файлы.
источник
Или если у вас есть каталоги внутри dir1, которые вы также хотите скопировать
источник
dir1/.*
не очень хорошая идея, так как оно копирует dir1 / .. (т.е. родительский каталог каталога, который вы на самом деле пытаетесь скопировать). Также копирует dir1 /. это нормально, за исключением того, что оно уже (в основном) было скопировано, поэтому вы выполняете работу дважды.dir1/.*
проблему / hidden files, перейдя в каталог, из которого вы хотите скопировать, а затем ссылаясь на него как.
. Итак, если вы хотите скопировать все файлы, включая скрытые, из каталога в существующий каталог, вы можете:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.Предполагая, что t1 - это папка с файлами, а t2 - пустой каталог. То, что вы хотите, это что-то вроде этого:
Помните, что в первом примере t1 и t2 должны быть полными или относительными путями (в зависимости от того, где вы находитесь). Если вы хотите, вы можете перейти к пустой папке (t2) и сделать это:
Или вы можете перейти к папке с файлами (t1) и сделать это:
Примечание. Знак * (или подстановочный знак) обозначает все файлы и папки. Флаг -R означает рекурсивно (все внутри всего).
источник
Конечная косая черта в исходном каталоге немного меняет семантику, поэтому копирует содержимое, но не сам каталог. Это также позволяет избежать проблем с глобализацией и невидимыми файлами, которые есть в ответе Бертрана (копирование
t1/*
пропускает невидимые файлы, копирование `t1 / * t1 /.* 'копий t1 /. И t1 / .., которые вам не нужны).источник
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(извините, нет форматирования кода в комментариях, читаемая версия на pastebin.com/yszSxV6G )В зависимости от некоторых деталей вам может потребоваться сделать что-то вроде этого:
... это в основном меняет каталог SRC и копирует его в цель, а затем возвращает обратно туда, откуда вы начали.
Дополнительная суета заключается в обработке относительных или абсолютных целей.
(Это не зависит от тонкой семантики самой
cp
команды ... о том, как она обрабатывает спецификации исходного кода с / без трейлинга / ... так как я не уверен, что они стабильны, переносимы и надежны за пределами только GNUcp
и I не знаю, будут ли они продолжаться в будущем).источник
Внутри некоторого каталога это будет использоваться полностью, так как копирует все содержимое из «folder1» в новый каталог «folder2» внутри некоторого каталога.
$ (pwd) получит путь для текущего каталога.
Обратите внимание на точку (.) После folder1, чтобы получить все содержимое в folder1
источник