Viết tập lệnh tcsh để sao chép các tệp được chỉ định trong đối số đầu tiên vào một thư mục cụ thể


0

Tôi đang cố gắng viết một tập lệnh trong tcsh sẽ sao chép các tệp được chọn mà tôi chỉ định tại dòng lệnh từ thư mục này sang thư mục khác mà không phải viết ra toàn bộ đường dẫn của mỗi tệp.

Ngoài ra, để giúp làm rõ, ví dụ tôi có 30 tệp trong một thư mục, tất cả đều có tên gần giống nhau nhưng tôi chỉ muốn sao chép 4 tệp (ví dụ: tôi không nghĩ có thể sử dụng ký tự đại diện ở đây) .

Như một lưu ý cuối cùng, tôi rất mới với Unix vì vậy mọi đề xuất "chết lặng" về cách viết kịch bản này đều được đánh giá cao!

Câu trả lời:


0

Các cplệnh sẽ đã làm điều này cho bạn. Thử đi:

> cd /path/to/files
> cp file1 file2 file3 file4 /path/to/destination

Vì bạn đang ở trong thư mục chứa các tệp, nên bạn không cần phải nhập đường dẫn đầy đủ của mỗi tệp, nhưng bạn cần phải nhập đường dẫn đầy đủ đến thư mục đích.

Nếu bạn thực sự muốn viết kịch bản của riêng mình, hãy thử điều này:

#!/bin/tcsh

cd /path/to/files
cp $* /path/to/destination

đặt nó trong một tập tin như move.tcshvà chạy lệnh chmod +x move.tcshđể làm cho nó thực thi được. Kịch bản này thực hiện chính xác như trên. Trong một kịch bản tcsh $*đại diện cho tất cả các đối số dòng lệnh.

Trong cả hai trường hợp, hãy đảm bảo bạn đặt đúng đường dẫn /path/to/files/path/to/destinationtrong trường hợp này, nhiệm vụ rất đơn giản, cách chính xác hơn để thực hiện việc này là trực tiếp từ dòng lệnh.


Cảm ơn cho phản ứng nhanh chóng của bạn. Tôi đã thử những gì bạn nói và tệp đầu tiên được sao chép tốt nhưng tệp thứ hai đã đưa ra lỗi này cp: không thể stat testing_2': No such file or directory" (but I know the file exists). This is what I'm working with... #!/bin/tcsh set raw_files="/infinite1/incoming/$*" foreach files ($raw_files) echo "Copying "basename $ raw_files "..." cp -r "$files" "/infinite1/infinite/analyses_Kresub/" echo ""basename $ raw_files` "sao chép thành công" kết thúc
David

cũng ... xin lỗi về định dạng khủng khiếp
David
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.