আপনার সমস্যাগুলির মধ্যে একটি হ'ল আপনি কমান্ড প্রতিস্থাপনের চারপাশে দ্বৈত উদ্ধৃতিগুলি রেখে গেছেন, সুতরাং dateকমান্ড থেকে আউটপুট ফাঁকা জায়গায় বিভক্ত হয়েছিল। দেখুন কেন আমার শেল স্ক্রিপ্টটি সাদা স্থান বা অন্যান্য বিশেষ চরিত্রগুলিতে শ্বাসরোধ করে? এটি একটি কার্যকর আদেশ:
cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%m-%d-%y-%r")"
আপনি যদি মূল ফাইলের নামের সাথে যুক্ত করতে চান তবে আপনার এটির একটি ভেরিয়েবল থাকা দরকার।
source=/home/bpacheco/Test1
cp -a -- "$source" "$source-$(date +"%m-%d-%y-%r")"
আপনি যদি ব্যাশ ব্যবহার করছেন তবে আপনি পরিবর্তে ব্রেস প্রসারণ ব্যবহার করতে পারেন।
cp -a /home/bpacheco/Test1{,"-$(date +"%m-%d-%y-%r")"}
- আপনি একটি ভিন্ন ডিরেক্টরিতে ফাইল অনুলিপি করুন এবং মূল ফাইল নাম টাইমস্ট্যাম্প সংযোজন করতে চান, আপনি এই ভাবে কি করতে পারেন ${source##*/} বিস্তৃতি মূল্য sourceশেষ অংশ ছাড়া /(এটা দীর্ঘতম উপসর্গ নকশার সাথে মেলে এমন সরিয়ে ফেলা হবে */):
source=/home/bpacheco/Test1
cp -a -- "$source" "/destination/directory/${source##*/}-$(date +"%m-%d-%y-%r")"
যদি Test1কোনও ডিরেক্টরি হয় তবে এটি পুনরাবৃত্তভাবে অনুলিপি করা হয় এবং ডিরেক্টরিটির ভিতরে থাকা ফাইলগুলি তাদের নাম রাখে: কেবল শীর্ষ স্তরের ডিরেক্টরিতে টাইমস্ট্যাম্প সংযুক্ত হয় (যেমন Test1/fooঅনুলিপি করা হয় Test1-05-10-15-07:19:42 PM)। আপনি যদি সমস্ত ফাইলের নামের সাথে একটি টাইমস্ট্যাম্প যুক্ত করতে চান তবে এটি একটি ভিন্ন সমস্যা a
আপনার টাইমস্ট্যাম্প বিন্যাসের পছন্দটি একটি খারাপ ধারণা: এটি মানুষের পক্ষে পড়া কঠিন এবং বাছাই করা শক্ত। আপনার পড়া সহজতর বিন্যাসটি ব্যবহার করা উচিত এবং এটি সহজেই সাজানো যেতে পারে, অর্থাত ক্রমহ্রাসমান ক্রমগুলির সাথে: বছর, মাস, দিন, ঘন্টা, মিনিট, দ্বিতীয় এবং তারিখের অংশ এবং সময়ের অংশের মধ্যে পৃথকীকরণ সহ।
cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%Y%m%d-%H%M%S")"
cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%Y-%m-%dT%H%M%S%:z")"