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
але це не буде копіювати приховані файли, так?
Fabrizio Regini

9
Правильно. cp -Rбуде, але це буде рекурсивно копіювати, тому ви можете або не захочете використовувати це. Можна cp Folder1/.* Folder2/скопіювати лише приховані файли.
Geoff

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
Вам доведеться працювати через досить повільне підключення до мережі, щоб копія сповільнювалася при виведенні тексту. І навіть тоді це, швидше за все, буде просто повернення командного рядка, а не сама копія.
Brian White

Ви втратили свої приховані файли. Виконайте "cp -rT src dest" на Linux, або "cp -R src / dest" на BSD.
xpusostomos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.