নাম পরিবর্তন করে ফাইলগুলি অনুলিপি করুন


28

আমার একটি বিশাল ফাইল ট্রি আছে। কিছু ফাইলের একই নাম থাকে তবে বিভিন্ন ক্ষেত্রে যেমন, some_code.cএবং Some_Code.c,।

সুতরাং আমি যখন এটি কোনও এনটিএফএস / ফ্যাট ফাইল সিস্টেমে অনুলিপি করার চেষ্টা করছি তখন এটি আমাকে ফাইলটি প্রতিস্থাপন করতে বা এড়াতে চান কিনা তা সম্পর্কে জিজ্ঞাসা করছে।

এই জাতীয় ফাইলগুলির স্বয়ংক্রিয় নামকরণের কোনও উপায় আছে, উদাহরণস্বরূপ,  (1)সংঘাতের ফাইলের নাম যুক্ত করে (উইন্ডোজ does যেমন করে)?


অদ্ভুত। আমি কেবল দেখতে চেয়েছিলাম, যদি আমি এনটিএফএস-পার্টিশনে (এইচপিএফএস / এনটিএফএস, অনুযায়ী sudo fdisk -l /dev/sda) একই নামের একটি ফাইল তৈরি করার চেষ্টা করি তবে আমি কী ধরণের ত্রুটি পেয়েছি , এবং touch foo; touch Foo2 টি ফাইল fooএবং দিয়ে শেষ হয়েছে এবং শেষ হয়েছে Foo। তবে আমি উইন্ডোজটিতে পুনরায় বুট করতে আগ্রহী নই, তারা সেখানে কীভাবে দেখায় তা দেখার জন্য। এটি কেবল একটি FAT- সমস্যা হতে পারে? আহ - আমার কাছে ফ্যাট সহ একটি ইউএসবি-স্টিক রয়েছে এবং একটি ফাইলের অভ্যন্তরে একটি ফ্যাট সিস্টেম তৈরি করতে পারে, ... - দয়া করে এক মুহূর্তে। :)
ব্যবহারকারী অজানা

উত্তর:


41

অনেক জিএনইউ সরঞ্জাম যেমন cp, mvএবং tarলক্ষ্য উপস্থিত থাকলে ব্যাকআপ ফাইলগুলি তৈরি সমর্থন করে। এটি হ'ল, অনুলিপি fooকরার সময় bar, যদি ইতিমধ্যে কোনও ফাইল বলা হয় bar, বিদ্যমানটির নতুন bar নামকরণ করা barহবে এবং অনুলিপিটির পরে বিষয়বস্তু থাকবে foo। ডিফল্টরূপে, barএর নামকরণ করা হয় bar~তবে আচরণটি সংশোধন করা যায়:

                                # If a file foo exists in the target, then…
cp -r --backup source target    #   rename foo → foo~
cp -r --backup=t source target  #   rename foo → foo.~1~ (or foo.~2~, etc)

অন্যান্য বৈকল্পিকগুলি রয়েছে, যেমন একটি ইতিমধ্যে বিদ্যমান থাকলে কেবল সংখ্যাযুক্ত ব্যাকআপ তৈরি করা। দেখুন coreutils ম্যানুয়াল আরো বিস্তারিত জানার জন্য।


1
উজ্জ্বল। আমি জানতাম না যে এই বিকল্পটির অস্তিত্ব ছিল, এবং এটি কেবলমাত্র কার্যকর হিসাবে প্রমাণিত। ধন্যবাদ @ গিলিস
স্টিভ হিল

2
ওএসএক্স সিপিতে - ব্যাকআপ পতাকা নেই। ব্যবহার করুন brew install coreutilsএবং তারপরে কমান্ডটি gcpব্যবহার করুন।
ওয়েস্টন গাঙ্গার

6

আমি চেষ্টা করেছিলাম

apropos copy | grep "(1)" 

সম্ভাব্য প্রার্থীদের সন্ধান করতে এবং এমকপি দেখিয়েছে।

man mcopy 

একটি প্রতিশ্রুতিবদ্ধ বিকল্প দেখায় -D clash-optionযে দুর্দান্ত না? তবে এত সুন্দর নয় - এটি বর্ণিত নয়। তবে mtools.dvi- তে কিছু ইঙ্গিত রয়েছে, যা আমি আমার সিস্টেমে অনুসন্ধান করেছি, সাফল্য ছাড়াই এবং গুগলের মাধ্যমে, সাফল্য ছাড়াই, তবে তারপরে, গুগলের সাহায্যে, আমি সরাসরি অনুসন্ধান করেছি mcopy clash-optionএবং এই সাইটটি পেয়েছি

আমি একটি ছোট পরীক্ষা করেছি

mcopy -D A f* a 

স্বতঃ নাম এবং টার্গেটডির পরীক্ষা করার জন্য a- স্বতঃবৃত্তির পরিবর্তে এটি আমাকে প্রতিটি ফাইল উপেক্ষা বা ওভাররাইড করতে বলেছিল, সেই বোকা ... ...

আমার সংস্করণটি mtools-4.0.10এবং সহায়তা পৃষ্ঠাটি 1996 - 15 বছর বয়সী। ইতিমধ্যে আমরা কি কিছু বৈশিষ্ট্যগুলি হারিয়েছি?

আমি কাজটি দুটি ধাপে বিভক্ত করব:

  • একটি সংক্ষিপ্ত ফাংশন তৈরি করুন, যা কোনও ফাইলের জন্য একটি অনন্য নাম তৈরি করে, যদি সেই নামটি দখল করা থাকে।
  • findআপনার অনুলিপি করতে চান এমন প্রতিটি ফাইলের জন্য সেই স্ক্রিপ্টটি চালান এবং চালনা করুন ।

আমরা কি এই পদ্ধতিতে সহায়তা করব? :)

ফাইলগুলির নিজের নামকরণের জন্য এখানে একটি স্ক্রিপ্ট রয়েছে:

#!/bin/bash

name=$1
target=$2

autorename () {
name=$1
target=$2
no=$3 

test -e ${target}/${name}.$no && autorename ${name} ${target} $((no+1)) || cp ${name} ${target}/${name}.$no 

}

test -e ${target}/${name} && autorename ${name} ${target} 0 || cp ${name} ${target} 

এবং এটি আমার পরীক্ষার প্রার্থনা:

find -maxdepth 1 -name "fo*" -type f -exec ./autorename.sh {} /mnt/hidden/test/a ";"

দ্রষ্টব্য: -ম্যাক্সডেপথ, -নাম এবং-টাইপ যেখানে প্রভাবিত ফাইলগুলির সংখ্যা নাটকীয়ভাবে সীমাবদ্ধ করতে ব্যবহৃত হয়। আমি গভীর ফাইল স্ট্রাকচারের জন্য স্ক্রিপ্টটি পরীক্ষা করিনি, না ফাইল নাম এবং ফাঁকা ফাঁকের জন্য, লাইনফিড, পেজফিড ইত্যাদি।

আমি .1 ব্যবহার করেছি কারণ এটি বেশিরভাগ কমান্ডগুলিতে সমস্যা করে না, যখন একটি (এবং ক) প্রায়শই মাস্কিংয়ের প্রয়োজন হয়।


এমটিউল ভি 3 এর জন্য লিঙ্কে ওয়েবেক মেশিনের সংরক্ষণাগার । অন্যান্য লাইভ সংস্করণগুলি (মাতুল v4.0.18 এর জন্য অভিন্ন) gnu.org/software/mtools/manual/mtools.html এবং mtools.linux.lu/mtools.html
লুই

0

জিএনইউর সাথে নয় cp, অন্তত।

আপনাকে দৃ strongly়ভাবে অনুরোধ করা হচ্ছে যে সদৃশ ফাইলের নাম নকল না করা (কেস অবহেলা), এগুলি আপনাকে কেবল বেদনার জগতে পরিণত করবে। ব্যবহার করে এই জাতীয় সদৃশগুলির একটি তালিকা সন্ধান করুন

find . | tr A-Z a-z | sort | uniq -d

তারপরে আউটপুট হলে প্রতিটি লাইনের জন্য একটি ফাইলের ম্যানুয়ালি নাম পরিবর্তন করুন। ভবিষ্যতে সদৃশ তৈরি করা এড়াতে চেষ্টা করুন।


লোকটি কখনই বোঝায়নি যে তিনিই সেই জগাখিচুড়ি তৈরি করেছিলেন।
tspang

ঠিক আছে, হ্যাঁ, সত্য, তবে পরিণতিগুলি তিনিই ভোগ করছেন ☺
jmtd

আমার এমন পরিস্থিতি আছে যেখানে আমি সামান্য ভিন্ন সময় থেকে ব্যাকআপ নিয়ে এসেছি। এগুলি একত্রিত করতে চান, তবে ক্লোবারটি বিভিন্ন সংস্করণ নয়। উদাহরণস্বরূপ, আমি জানি সবার জন্য, বয়স্কটি আরও ভাল হতে পারে। আমি পরীক্ষা করার পরে বলতে পারি। মাঝামাঝি সময়ে, ব্যাকআপগুলি অনুলিপি করা এবং পুনরায় নামকরণ করা দরকার।
আবাল্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.