Unix - копировать содержимое одного каталога в другой [закрыто]


90
Folder1/
    -fileA.txt
    -fileB.txt
    -fileC.txt

> mkdir Folder2/

> [copy command]

А теперь Folder2/выглядит так:

Folder2/
    -fileA.txt
    -fileB.txt
    -fileC.txt   

Как этого добиться? Я пробовал, cp -r Folder1/ Folder2/но в итоге получил:

Folder2/
    Folder1/
        -fileA.txt
        -fileB.txt
        -fileC.txt

Это близко, но не совсем то, что я хотел.

Благодаря!

Ответы:


124

Попробуй это:

cp Folder1/* Folder2/

3
но это не копирует скрытые файлы, верно?
Фабрицио Регини

9
Верный. cp -Rбудет, но это будет рекурсивно копировать, поэтому вы можете или не захотите использовать это. Можно было cp Folder1/.* Folder2/копировать только скрытые файлы.
Джефф

1
Обратите внимание, что это не удастся, если вы используете sudo или эквивалент, а каталог содержит много файлов. Я получаюsudo: unable to execute /bin/cp: Argument list too long
Натан Осман

обратите внимание, что у SCP немного другой синтаксис, см. здесь: stackoverflow.com/a/26346339/1984636
sivi

Не делай этого. Выполните "cp -rT src dest" в Linux или "cp -R src / dest" в BSD.
xpusostomos

47

Довольно просто, с *подстановочным знаком.

cp -r Folder1/* Folder2/

Но в соответствии с вашим примером рекурсия не требуется, поэтому будет достаточно следующего:

cp Folder1/* Folder2/

РЕДАКТИРОВАТЬ:

Или пропустите mkdir Folder2часть и просто запустите:

cp -r Folder1 Folder2

Если ls | sort -k1.5 | head -8 > folder1то как это сделать?
Pooja

Вы только что потеряли все свои скрытые файлы. Не делай этого. Выполните "cp -rT src dest" в Linux или "cp -R src / dest" в BSD.
xpusostomos

23

Чтобы сделать точную копию, разрешения, владение и все остальное, используйте "-a" с "cp". "-r" скопирует содержимое файлов, но не обязательно сохранит все остальное без изменений.

cp -av Источник / * Dest /

(сначала убедитесь, что Dest / существует)

Если вы хотите многократно обновляться с одного файла на другой или убедитесь, что вы также скопировали все точечные файлы, rsyncэто будет большим подспорьем:

rsync -av --delete Source / Dest /

Это также "исправимо", так как вы можете перезапустить его, если прервите его во время копирования. Мне нравится "-v", потому что он позволяет вам смотреть, что происходит, но вы можете его опустить.


1
для чего -v?
HattrickNZ

многословный, просто чтобы посмотреть, что происходит.
Брайан Уайт

1
Если у вас много файлов, это -vможет занять некоторое время. Если вам не нужен вывод, используйте -aтолько.
Эял Левин

1
Вам придется использовать довольно медленное сетевое соединение, чтобы копия замедлялась из-за вывода текста. И даже тогда, скорее всего, это будет просто возврат командной строки, а не сама копия.
Брайан Уайт

Вы потеряли свои скрытые файлы. Выполните "cp -rT src dest" в Linux или "cp -R src / dest" в BSD.
xpusostomos
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.