আমি কীভাবে নকল ফাইলের ফাইলগুলি একটি ডিরেক্টরিতে অনুলিপি করতে পারি এবং ডুপ্লিকেটগুলির পুনরায় নামকরণ করে উভয় ফাইলই ধরে রাখতে পারি?


11

উইন্ডোজ ওএসে, আপনি যখন আগে থেকেই সেই নামের কোনও ফাইল থাকা কোনও ডিরেক্টরিতে কোনও ফাইল অনুলিপি করেন, তখন আপনাকে জিজ্ঞাসা করবে কিনা:

  1. ফাইলটি অনুলিপি করুন এবং বিদ্যমানটিকে প্রতিস্থাপন / ওভাররাইট করুন
  2. ডিরেক্টরিতে নতুন ফাইলের অনুলিপি বাতিল করুন
  3. ফাইলটি অনুলিপি করুন, তবে নাম পরিবর্তন করুন ("ফাইলের নাম - অনুলিপি (1)" এর মতো)

আমি যখন উবুন্টুতে এটি করি তখন আমার কাছে তৃতীয় বিকল্প নেই (যা অনেক সময় খুব দরকারী বিকল্প)। উবুন্টুতে এটি করার কোনও উপায় আছে কি?

উত্তর:


17

দুর্ভাগ্যক্রমে নটিলাসের সেই বিকল্প নেই।

বিকল্প 1: একটি পৃথক ফাইল ম্যানেজার

আপনি ডলফিনের মতো আরেকটি ফাইল ম্যানেজার চেষ্টা করতে পারেন ।

ডলফিন ইনস্টল করুন( ইউনিভার্সের সংগ্রহস্থল প্রয়োজন )

বিকল্প 2: কমান্ড-লাইন

আপনি cp(1)ব্যাকআপ বিকল্পের সাহায্যে কমান্ড লাইন প্রোগ্রামটি ব্যবহার করতে পারেন :

cp --backup -t DESTINATION SOURCE [SOURCE...]

এর ম্যানুয়াল পৃষ্ঠায় বর্ণিত অন্যান্য বিকল্পগুলির সাথে এটি নিয়ন্ত্রণ করা যেতে পারে যা নিম্নলিখিত প্রভাবসমূহ cp(1):

--backup[=CONTROL] - প্রতিটি বিদ্যমান গন্তব্য ফাইল একটি ব্যাকআপ করুন

-b- পছন্দ --backupকিন্তু একটি যুক্তি গ্রহণ করে না

-S, --suffix=SUFFIX- সাধারণ ব্যাকআপ প্রত্যয়টি ওভাররাইড করুন

ব্যাকআপ প্রত্যয় হয় ~, সাথে সেট যদি না --suffixবা SIMPLE_BACKUP_SUFFIX। সংস্করণ নিয়ন্ত্রণ পদ্ধতিটি --backupবিকল্পের মাধ্যমে বা VERSION_CONTROLপরিবেশের ভেরিয়েবলের মাধ্যমে নির্বাচন করা যেতে পারে । মানগুলি এখানে:

  • none, off: ব্যাকআপগুলি কখনই তৈরি করবেন না ( --backupদেওয়া হলেও )
  • numbered, t: সংখ্যাযুক্ত ব্যাকআপ নিন
  • existing, nil: সংখ্যাযুক্ত ব্যাকআপ উপস্থিত থাকলে সংখ্যাযুক্ত, অন্যথায় সহজ
  • simple, never: সর্বদা সহজ ব্যাকআপ নিন

উদাহরণ

cp --backup=existing --suffix=.orig -t ~/Videos ~/Music/*

এই সমস্ত ফাইল কপি হবে ~/Musicথেকে ~/Videos। যদি একই নামের কোনও ফাইল গন্তব্যস্থলে উপস্থিত থাকে তবে .origএটির নাম ব্যাকআপ হিসাবে যুক্ত করে এর নামকরণ করা হবে। যদি ব্যাকআপের মতো একই নামের কোনও ফাইল থাকে তবে ব্যাকআপটির পরিবর্তে নাম সংশোধন করা হবে .1এবং যদি তা উপস্থিত থাকে .2এবং ততক্ষণে। তবেই উত্স ফাইলটি গন্তব্যে অনুলিপি করা হয়েছে।

আপনি যদি উপ-ডিরেক্টরিগুলিতে ফাইলগুলি অনুলিপিভাবে অনুলিপি করতে চান তবে ব্যবহার করুন:

cp -R --backup=existing --suffix=.orig -t ~/Videos ~/Music

একটি ভিন্ন ফাইল ম্যানেজার ব্যবহার করার পরামর্শের জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, থুনারেরও বিকল্প নেই যা আমি উল্লেখ করছি। এটি কেবল রয়েছে: বাতিল করুন, সমস্ত এড়িয়ে যান, এড়িয়ে যান, প্রতিস্থাপন করুন, সমস্ত প্রতিস্থাপন করুন। ডলফিন চেষ্টা করে দেখবেন।
হাইজেনবার্গম্যান

1
ডলফিন এর জন্য দুর্দান্ত কাজ করে :)
হাইজেনবার্গম্যান

দুটি চেষ্টা করে দেখার জন্য ধন্যবাদ। আমি আপনার অনুসন্ধান অনুযায়ী আমার প্রশ্ন আপডেট করব।
ডেভিড ফোস্টার 13

@ হাইজেনবার্গম্যান, হাই আপনি ডলফিন বলতে কী বোঝাতে চেয়েছেন এর জন্য দুর্দান্ত কাজ করে? এটি নতুন নামকরণের বিকল্পটি দেয় তবে এটি কেবল আমাকে একের পর এক ফাইলগুলির নাম পরিবর্তন করতে দেয়। দুর্ভাগ্যক্রমে "সবার জন্য প্রয়োগ করুন" বিকল্পটি নাম পরিবর্তনের বিকল্পের সাথে ব্যবহার করা যাবে না। এটি প্রচুর পরিমাণে ফাইলের জন্য অযথা। এটি কি কেবল আমার সংস্করণ? আপনি কি ডলফিন ব্যবহার করে আপনার ডাবলগুলির একবারে নামকরণ (উইন্ডোতে আপনি যেমন করতে পারেন) পরিচালনা করার ব্যবস্থা করেছেন?
Kvothe

1
@ n1k31t4 দয়া করে --backup=existingআবার বিবরণ পড়ুন । ইঙ্গিত: নিম্নলিখিত ক্ষেত্রে কি হবে: touch foo bar; cp -v --backup=numbered foo bar; cp -v --backup=existing foo bar?
ডেভিড ফোস্টার

2

এটি সুপারভাইজারে পাওয়া গেছে :

#!/bin/bash
cp -vn "$1" "$2"/ || cp -vn "$1" "$2"/"${1##*/}"~"$(md5sum "$1" | cut -f1 -d' ')"

একই নাম থাকা ফাইলটির নামের সাথে এমডি 5সাম যুক্ত ফাইলটির নাম পরিবর্তন হয়ে যায়। যদি আপনি এটি "সেভকপি" এর মতো কোনও ফাইলনামে সংরক্ষণ করেন তবে এটি findকার্যকর করতে আপনি এটি ব্যবহার করতে পারেন :

find . -name 'z*.jpg' -exec ./saveCopy {} /tmp/Extracted/ \;

আরও তথ্যের জন্য লিঙ্কটি দেখুন।



0

শীর্ষস্থানীয় ডিরেক্টরিতে এই স্ক্রিপ্টটি অনুলিপি করুন, সম্পাদনযোগ্য করুন এবং এটি চালান:

#!/bin/bash

## Get a list of all files
list=$(find . -mindepth 2 -type f -print)
nr=1

## Move all files that are unique
find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
    mv -n $file ./
done
list=$(find . -mindepth 2 -type f -print)

## Checking which files need to be renamed
while [[ $list != '' ]] ; do
   ##Remaming the un-moved files to unique names and move the renamed files
   find . -mindepth 2 -type f -print0 | while IFS= read -r -d '' file; do
       current_file=$(basename $file)
       mv -n $file "./${nr}${current_file}"
   done
   ## Incrementing counter to prefix to file name
   nr=$((nr+1))
   list=$(find . -mindepth 2 -type f -print)
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.