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

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

Благодаря!

JDS
источник

Ответы:

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