Làm thế nào để làm cho bản sao có filelist trên Linux?

K

klug

Guest
Một số vấn đề: Tôi có một số thư mục với các file trên đó. Ngoài ra tôi có một số tập tin với danh sách các tập tin sao chép. Làm thế nào để sao chép các tập tin chỉ từ danh sách đó? Tôi đã thực hiện một số kịch bản bash: ------------------------- # / bin / bash # # SORCEDIR = / home / danny / files / targetdir! = / home/danny/files2 / ALIST = / home / danny / filelist.txt FILELIST = `cat $ ALIST` cho NAME trong $ FILELIST làm TÊN cp SORCEDIR $ $ $ targetdir thực hiện ----------- ------------- Nhưng kịch bản này không hoạt động được nếu file có tên không gian trên nó (ví dụ "Lần Doc.pdf"). Làm thế nào để làm cho kịch bản chính xác không? Cảm ơn trước. Klug.
 
Bạn đang nhận được để compicated để làm điều đó. cp recives tùy ý lưu trữ không gian tách biệt và đối số cuối cùng của nó nhận được các mục tiêu của nó. cp file_1_ext file_2.ext ... filen_ext target_dir / Và điều không gian trên * nix là trated như một carater đặc biệt, do đó bạn cần phải trước nó \\ a, tôi khuyên bạn nên tránh sử dụng không gian trong tên và thay thế với _ cuz nếu bạn làm việc thường xuyên trong sh * bạn sẽ thấy rằng bạn đang nhận được 2 caracters nhiều loại, ngay cả với TAB ... không de làm việc .... Tôi giả sử bạn có thể đoán được phần còn lại ... : D
 
Vâng, tôi biết rằng nó là tốt hơn để tránh không gian trong tên tập tin, nhưng tôi có vấn đề này và tôi không thể thay đổi tên tập tin và danh sách. Tôi đã giải quyết được vấn đề này bằng cách này: ------------------------- # / bin / bash # # SORCEDIR = / home / danny / files / TargetDir = / home/danny/files2 / ALIST = / home / danny / filelist.txt cd $ SORCEDIR tar cvf - - file-từ $ ALIST | (cd $ targetdir; tar xvf -) ------- -----------------
 
HAHAHAH goood cách để làm điều đó, vẫn còn itsn't cách TỐT NHẤT, có thể bạn có thể sử dụng một bộ lọc. (Đó là từ mysql, nhưng so với cùng kỳ có thể sử dụng nó) thay thế \\ \\ b \\ \\ \\ - filelist.txt \\ b là một chuyển đổi mà thay thế nhu cầu tìm không gian các \\ aditional là lý do nổi tiếng, có thể bạn có thể đặt một \\ ( không gian) ở đây, tôi không chắc chắn \\ \\ đặt một \\ trong tập tin và \\ (không gian) đặt các không gian trong tập tin. đó là lý do tại sao \\ \\ \\ (không gian) Nó làm công việc dịch thuật các không gian Có một cách tốt hơn để làm điều đó, là một ống dẫn mà dịch trên bay, nhưng tôi không nhớ khá tốt, vì vậy tôi không rối tung với nó ngay bây giờ
 
Cảm ơn, deepspawn, tôi cũng đang tìm kiếm thay thế "", nhưng đã không tìm thấy con đường ... Không có lệnh "thay thế" trong Slackware Linux của tôi. : (Dù sao, nhờ ý tưởng của bạn, tôi sẽ giữ nó cho tương lai;) Best Wishes! Klug.
 

Welcome to EDABoard.com

Sponsor

Back
Top