2015-04-14 23 views
12

Tôi tự hỏi nếu có một lệnh giống hệt nhau để sao chép một thư mục vào thư mục hiện tại như nó đã sử dụng MS-DOS cũ. Hãy nói rằng vị trí thư mục hiện tại của tôi là:Lệnh Linux cp để sao chép một thư mục vào thư mục hiện tại

/var/www/ 

Tôi có thư mục và các tập tin tại địa chỉ:

/home/hope/subfolder/docs/ 
/home/hope/subfolder/images/ 
/home/hope/subfolder/.config 
/home/hope/subfolder/readme.txt 

Tôi biết rằng lệnh sau:

cp -rT /home/hope/subfolder . 

sẽ sao chép tất cả các file (thậm chí chấm các tệp ẩn) và thư mục trong thư mục "thư mục con" vào thư mục hiện tại, do đó kết quả sẽ là:

/var/www/docs/ 
/var/www/images/ 
/var/www/.config 
/var/www/readme.txt 

Hình như lệnh đó để sao chép thư mục nguồn đến vị trí hiện nay là:

cp -rT /home/hope/subfolder ./subfolder 

mặc dù điều này là tốt, tôi thấy nó mà đôi khi tôi sẽ phạm sai lầm cho tên thư mục phức tạp đối với các điểm đến, như vậy là có một cách để sử dụng một lệnh như:

cp -rT /home/hope/subfolder . 

hoặc thậm chí như thế này

cp -rT /home/hope/subfolder /var/www/. 

để có kết quả như sau:

/var/www/subfolder/docs/ 
/var/www/subfolder/images/ 
/var/www/subfolder/.config 
/var/www/subfolder/readme.txt 

Cảm ơn bạn.

+0

Bạn đã thử cp -r/home/hope/subfolder/var/www/ –

+0

Chỉ cần bỏ qua tham số '-T' và nó sẽ thực hiện chính xác những gì bạn muốn. – foobar

Trả lời

19

Chỉ cần bỏ qua các tham số -T, vì đó là những gì ngăn cản lệnh từ hoạt động bình thường:

cp -r /home/hope/subfolder . 

Tham số -T đối xử với đối số mục tiêu như một tập tin, vì vậy không sao chép sẽ được thực hiện ở tất cả nếu đó thực sự là một thư mục.

Một lời nhắc nhở thân thiện: hầu như tất cả các lệnh Unix có một --help đối số dòng lệnh đó là giá trị cố gắng ra trong trường hợp của một rắc rối :)

+0

Tôi hiểu :) Điều đó cũng cho phép sao chép các tệp ẩn bên trong "thư mục con"? Cảm ơn! – user702300

+0

Nó chắc chắn sẽ. –

0

Đối với tôi, rào cản chính là/phần gia đình. Tôi cần phải sao chép các tập tin từ một thư mục trong nhà của tôi bắt đầu bằng chữ 'a' vào thư mục hiện tại của tôi, không phải là trang chủ. Vì vậy, tôi đã sử dụng:

cp home/tmp/a* ./ 

làm việc này cho tôi. Tôi đã thử các lệnh như:

cp ~/home/tmp/a* ./ 

nhưng nó không hoạt động.

Các vấn đề liên quan