Як скопіювати папку з файлами в іншу папку в Unix / Linux? [зачинено]


1191

У мене виникають проблеми з копією папки з файлами в цій папці в іншу папку. Команда cp -rне копіює файли в папку.




Я б хотів, щоб це можна було перенести до ДП, де це більше на тему.
jrh

6
Програмування Bash на тему .
xskxzr

Відповіді:


1978

Ви шукаєте варіант -R.

cp -R path_to_source path_to_destination/
  • Якщо destinationйого немає, він буде створений.
  • -Rзасоби copy directories recursively. Ви також можете використовувати, -rоскільки це нечутливе до регістру.
  • Зверніть увагу на нюанси додавання /пробілу відповідно до коментаря @ muni764 .

5
мені цікаво, чому саме ця команда в dockerfile копіює всі файли каталогів у вихідне місце, а не копіює лише весь каталог.
holms

4
Я вважаю, що "/" зрештою має значення і це може спричинити ваш досвід. Якщо джерело включає косую косу рису, вона буде копіювати лише те, що знаходиться в каталозі. Якщо вона не включає косую рису, вона також скопіює каталог, а потім вміст всередині нього. Моя пам'ять полягає в тому, що така поведінка змінюється залежно від команд і, можливо, подій в ОС трохи. Ось посилання з додатковою інформацією.
OllieBrown

23
Я б сказав, якщо ви не хочете включати джерело, і ви хочете переконатися, що все скопійовано (посилання, приховані файли) без копіювання вихідної папки-джерела - використовувати -ra source /. пункт призначення. Це дозволить скопіювати вміст папки, але не саму батьківську папку, що іноді зручно. І різниця - /.
muni764

Це також, здається, працює правильно, якщо каталоги, які слід копіювати, є символічними посиланнями, що було моїм випадком використання.
Гдаля

3
Зверніть увагу на важливість "Slash dot" у вашому джерелі cp -r src/. dest, оскільки я знаю, що це згадується, але я все одно, мабуть, сумую щоразу.
bbeecher

368

Ви шукаєте cpкоманду. Вам потрібно змінити каталоги так, щоб ви знаходилися за межами каталогу, який ви намагаєтесь скопіювати.

Якщо каталог, який ви копіюєте, викликається, dir1і ви хочете скопіювати його у свою /home/Picturesпапку:

cp -r dir1/ ~/Pictures/

Linux /враховує регістри, а також потребує після кожного каталогу, щоб знати, що це не файл. ~є спеціальним символом у терміналі, який автоматично оцінює домашній каталог поточного користувача. Якщо вам потрібно знати, в якому каталозі ви знаходитесь, скористайтеся командою pwd.

Якщо ви не знаєте, як використовувати команду Linux, є сторінка вручну, на яку можна звернутися, ввівши:

man [insert command here]

в термінальному рядку.

Крім того, для автоматичного завершення довгих шляхів до файлів під час введення в термінал ви можете натиснути Tabпісля того, як ви почали вводити шлях, і вам буде запропоновано вибір, або він вставить решту частину шляху.


6
Щоб уточнити далі, -rопція в цьому буде копіювати каталоги рекурсивно.
TVann

5
Можливо ОП не вказано , що він був з допомогою cp -rкоманди, але він не працює належним чином?
MD XF

4
Причиною того, що я включив інформацію про Manpages, є те, що ці прапори можуть залежати від розподілу. Однак, здебільшого, по- видимому -r, --recursiveі -Rє еквівалентними. Це також дасть загальні підводні камені тощо. Що приємно.
Alex W

6
Якщо ви хочете, щоб переносно скопіювати ДИРЕКТОРІЮ, а не лише її вміст, залиште задні тире у вихідній папці, тобто. cp -r dir1 ~/Pictures/
mehtunguh

105

Використання:

$ cp -R SRCFOLDER DESTFOLDER/

4
саме так я це зробив і demo1_copyвже не існував$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.