বিভিন্ন নাম সহ একগুচ্ছ ফাইল অনুলিপি করুন এবং আটকান


10

নাম সহ আমার কাছে একগুচ্ছ পাঠ্য ফাইল রয়েছে

foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_original.in
...
...
foo_bar_abc_1_1000_geh_original.in

আমি প্রতিটি ফাইল অনুলিপি করতে (এবং মূল ফাইলগুলি রাখতে) এবং বিভিন্ন নামের (একই ফোল্ডারে) পেস্ট করতে চাই,

foo_bar_abc_1_01_geh_copy.in
foo_bar_abc_1_02_geh_copy.in
foo_bar_abc_1_03_geh_copy.in
...
...
foo_bar_abc_1_1000_geh_copy.in

আমি কীভাবে এটি একটি সহজ স্ক্রিপ্ট ব্যবহার করে করতে পারি?

উত্তর:


13

আপনার যেখানে আসল ফাইল রয়েছে সেখানে ডিরেক্টরি পরিবর্তন করুন।

তারপরে নিম্নলিখিত কমান্ড লাইনের সাথে পরীক্ষা করুন,

for i in *_original.*;do echo cp -p "$i" "${i/_original./_copy.}";done

এবং যদি এটি দেখতে ভাল লাগে, সরিয়ে ফেলুন echoএবং অনুলিপি করুন,

for i in *_original.*;do cp -p "$i" "${i/_original./_copy.}";done

8

আপনি প্যাকেজmcp থেকে নিম্নলিখিত উপায়ে ব্যবহার করতে পারেন :mmvএমএমভি ইনস্টল করুন

mcp "*original*" "#1copy#2"

এটি বর্তমান ডিরেক্টরিতে "মূল" স্ট্রিংযুক্ত প্রতিটি ফাইল অনুলিপি করবে এবং এই স্ট্রিংটিকে "অনুলিপি" দিয়ে প্রতিস্থাপন করবে। পতাকাটি mcpযুক্ত করে আপনি কী করতে পারবেন তা পরীক্ষা করতে পারেন -n, তবে এটি নিঃশব্দে ফাইলগুলি ওভাররাইট করে না, তবে আপনাকে জিজ্ঞাসা করে। ব্যবহারের mmvসুবিধা রয়েছে cpযে আপনার প্রতিটি ফাইলের জন্য এটি কল করতে হবে না - আপনার মতো এক হাজার ফাইল অনুলিপি করে বলে মনে হচ্ছে এটি একটি তাত্পর্য তৈরি করে।

আপনি নিম্নলিখিত উপায়ে জিএনইউparallel সমান্তরাল ইনস্টল করুন ব্যবহার করতে পারেন ( --dry-runঅনুলিপিটি সম্পাদনের জন্য এটি পরীক্ষা করার জন্য এটি অপসারণ করুন):

parallel --dry-run cp -p "{}" "{=s/original/copy/=}" ::: *

বা, যদি এটি "তর্ক তালিকায় খুব দীর্ঘ" ত্রুটি দেয়:

printf "%s\0" * | parallel --dry-run -0 cp -p "{}" "{=s/original/copy/=}"

উদাহরণ রান

$ ls -1
foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_original.in
foo_bar_abc_1_04_geh_original.in
$ mcp "*original*" "#1copy#2"
$ ls -1
foo_bar_abc_1_01_geh_copy.in
foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_copy.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_copy.in
foo_bar_abc_1_03_geh_original.in
foo_bar_abc_1_04_geh_copy.in
foo_bar_abc_1_04_geh_original.in

আসুন time, ধীর মেশিনে প্রতিটি 100 কিবি এর 1000 টিরও বেশি ফাইল চালনা করুন :

$ time mcp "*original*" "#1copy#2"
real    0m1.114s
user    0m0.000s
sys     0m0.132s
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.