ব্যবহারকারীদের প্রতিটি ফাইলের নিশ্চিতকরণের জন্য অনুরোধ করে ফাইলগুলির একটি গ্রুপ সরান


9

সিস্টেম: উবুন্টু মেট 18.04।

আমার কাছে ফাইলের সংকলন রয়েছে (ডিরেক্টরি কাঠামোর একাধিক ডিরেক্টরিতে) এবং আমি তাদের অনেকগুলি অন্য ডিরেক্টরিতে স্থানান্তর করতে চাই। আমি বলতে পারি যে আমি কোন ফাইলগুলি তাদের নাম দিয়ে চালিত করতে চাই (সেগুলি রেসিপি শিরোনাম) তবে আমি যে ফাইলগুলিকে সরিয়ে নিতে চাই না এবং যে ফাইলগুলি আমি সরাতে চাই না তার মধ্যে পার্থক্য করার অন্য কোনও উপায় নেই; নামটি নিজে পরীক্ষা করে আমার প্রতিটি ফাইলের জন্য সিদ্ধান্ত নেওয়া দরকার।

সুতরাং, আমি প্রতিটি ফাইলের মতো একবারে স্থানান্তর করতে চাইলে একটি কমান্ড চালাচ্ছি

mv Snacks/OkaraCrackers NeedsTesting/
mv Snacks/SunflowerBrittle NeedsTesting/
mv Treats/ChocolateChilliFudge NeedsTesting/
mv Treats/PecanBlondies NeedsTesting/

এমনকি ট্যাব সমাপ্তির সাথে এটি খুব বেশি টাইপিংও করে। আমি যা করতে চাই তা হ'ল কিছুটা

shopt -s globstar
mv --prompt-me-for-every-file ** NeedsTesting/

সুতরাং আমি কেবল yবা nপ্রতিটি ফাইলের জন্য চাপতে পারি ।

আমি কীভাবে একটি গ্রুপের ফাইলকে স্থানান্তর করতে পারি এবং প্রতিটি ফাইলের নিশ্চিতকরণের জন্য অনুরোধ জানাতে পারি?

উত্তর:


6

উপায় 1: আপনার গ্রাফিকাল ফাইল ব্রাউজারে একটি ট্রি ভিউ ব্যবহার করে

আমি ধরে নিই যে আপনার আসল লক্ষ্যটি প্রতিটি ফাইলের জন্য একটি পছন্দ করা, এবং প্ররোচিত হওয়ার জন্য কঠোরভাবে কথা বলা না । তবে, আপনি যদি টার্মিনালের প্রতিটি ফাইল সম্পর্কে অনুরোধ জানাতে চান তবে নীচে ওয়ে 2 দেখুন।

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

কিছু ফাইল ব্রাউজারে, গাছের দৃশ্য সক্ষম করতে একজনকে অবশ্যই একটি পছন্দ মেনুতে যেতে হবে। ম্যাট ফাইল ব্রাউজার কাজে, এটি সর্বদা তালিকায় প্রদর্শিত থাকে। তালিকার দৃশ্যে স্যুইচ করতে ভিউ → তালিকা (অথবা Ctrl+ টিপুন 2) ক্লিক করুন । প্রতিটি ডিরেক্টরিতে এর বাম দিকে একটি ছোট ডানদিকের-ত্রিভুজ থাকে যা নির্দেশ করে এটি প্রসারিত হতে পারে। কোনও ফোল্ডার প্রসারিত করতে, সেই ত্রিভুজটি ক্লিক করুন বা ফোল্ডারটি নির্বাচন করা হলে (ডান তীর) কী টিপুন। এই উদাহরণে, আমি সেগুলি একে একে বেছে নিয়েছি এবং তাদের গন্তব্যগুলিতে একবারে টেনে আনছি:

কাজা ফাইল ব্রাউজারে একটি গাছের কাঠামোয় নির্বাচিত একাধিক ফাইলগুলি অন্য ফোল্ডারে টেনে নিয়ে যাওয়া হচ্ছে তবে এখনও সরানো হয়নি

ধরে নিই উত্স এবং গন্তব্য একই ড্রাইভে রয়েছে, ডিফল্টরূপে চালনাগুলি টেনে নিয়ে যায়। আপনি যদি এর পরিবর্তে অনুলিপি করতে চান, আপনি Ctrlচাবিটি ধরে রাখবেন ।

টানুন-সরানো শেষ হওয়ার পরে পরিস্থিতি, যে ফাইলগুলি নির্বাচন করা হয়েছিল সেগুলি এখন তাদের মূল পৃথক অবস্থানের পরিবর্তে গন্তব্য ফোল্ডারে একসাথে রয়েছে

তত্ত্ব, এটা ফিক্স ভুল করা সহজ এই পদ্ধতি ব্যবহার করে, কারণ (Caja সহ) সমর্থন অধিকাংশ ফাইল ব্রাউজার Ctrl+ + Zব্যাচ ক্রিয়াগুলি সমেত পূর্বাবস্থা সাম্প্রতিক কর্ম করতে। তবে, আমি এর সাথে ভাগ্য মিশ্রিত করেছি। কখনও কখনও ফাইলগুলি ভুল ফোল্ডারে ফিরে যায়।

সুসংবাদটি হ'ল আপনি বেশিরভাগ টেক্সট ডকুমেন্টগুলির সাথে কাজ করছেন বলে মনে হয় যা ছোট আকার ধারণ করে, তাই আপনি tarকোনও ঝামেলা ছাড়াই প্রথমে একটি অতিরিক্ত ব্যাকআপ নিতে পারেন । আপনি কোন পদ্ধতি ব্যবহার না করেই তা করার পরামর্শ দিই।

উপায় 2 : ক্রিয়া findসহ কমান্ড-ok

findফাইলগুলি সন্ধান করা এবং তাদের পাথগুলি ক্রিয়া -execএবং -execdirক্রিয়া সহ একটি স্বেচ্ছাসেবী বাহ্যিক কমান্ডে পাস করার সাধারণ ব্যবহার । কিন্তু findএছাড়াও আছে -okএবং -okdirযেগুলি বিজ্ঞপ্তি প্রতিটি সময় আগে তারা কমান্ড চালানো। আপনি যদি প্রতিটি ফাইল সম্পর্কে সত্যই কোনও টার্মিনালে প্রম্পট হতে চান তবে আমার মনে হয় এটি যাওয়ার উপায়।

উপরে প্রদর্শিত একই প্রভাব তৈরি করার জন্য যখন এটি করা হয় তখন:

ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y

Textsউত্স ডিরেক্টরিটি (যা কেবল তখনই এটি হতে পারে .যদি আপনি এটি করতে পারেন cd) এবং Glorious Destination Folderপ্রকৃত গন্তব্য ডিরেক্টরি দিয়ে প্রতিস্থাপন করুন ।

এটি ফাইলের জন্য একটি কমান্ড চালায়; বিপরীতে -execএবং -execdir, -okএবং একই আদেশের অনুরোধে একাধিক সন্ধান পাথগুলি পাস করার জায়গায় -okdirসমর্থন করে +না \;। ফলস্বরূপ, আপনার রূপটি ব্যবহার করার দরকার-t dest নেই mv। আমি করছেন করার পরামর্শ দিই, যাতে যাহাই হউক না কেন, যদিও, উভয় সাধারণভাবে সঙ্গে findবিশেষত এই অবস্থায় তাই অনুরোধ জানানো আরো কমান্ড তারা সম্পর্কে প্ররোচনা করছি মত চেহারা।

যেহেতু এই কমান্ডটি লেখা আছে, যদি findএকটি প্রতীকী লিঙ্কের মুখোমুখি হয় যা শেষ পর্যন্ত একটি নিয়মিত ফাইলের দিকে নির্দেশ করে তবে এটি (লিঙ্কটি নয়, লক্ষ্যটি নয়) উপেক্ষা করার পরিবর্তে সরানো হয়। আপনি যদি সত্যিই কেবল একটি নিয়মিত ফাইল পরিচালনা করতে চান তবে -type fপরিবর্তে ব্যবহার করুন -xtype f

আপনি একটি scriptঅধিবেশনে এটি করতে চাইতে পারেন যাতে আপনি কোনও ভুল করলে কী ঘটেছিল তা বুঝতে পারেন। তবে আবার, ব্যাকআপ না রাখার কোনও কারণ নেই।

উপায় 3: একটি প্রকাশ প্রকাশ করুন এবং এটি সম্পাদনা করুন

কমপক্ষে এতক্ষণ যেহেতু ফাইলগুলির নামে নতুন লাইন না থাকে, আপনি findএকটি ম্যানিফেস্ট --a ফাইল তৈরি করতে একটি সাধারণ কমান্ড ব্যবহার করে সূচনা করতে পারেন যা আপনার (যে ক্ষেত্রে সম্ভাব্য এই ক্ষেত্রে) আগ্রহী সেই ফাইলগুলির নাম তালিকাভুক্ত করে a :

find Texts -xtype f >manifest

manifestবিবেচনাধীন ফাইলগুলির তালিকাভুক্ত ফাইলের জন্য আপনার যে নামটি পছন্দ হয় তার সাথে প্রতিস্থাপন করুন (এবং সেই সাথে বাকী দিকনির্দেশগুলি সামঞ্জস্য করুন)।

উপরের মতো, Textsআপনার আসল উত্স ডিরেক্টরিটি প্রতিস্থাপন করুন , এটি হতে পারে .যদি আপনি cdএটি না হন। যাইহোক, যদি Textsকোনও আপেক্ষিক পথ হয় (যদি তা হয় তবে এটি .) তবে পরে আপনি যখন বাস্তবে পদক্ষেপগুলি সম্পাদন করেন তখন আপনার একই স্থানে থাকা নিশ্চিত হওয়া উচিত ।

এই findকমান্ডটি চালানোর পরে , manifestএকটি পাঠ্য সম্পাদককে খুলুন । এই হতে পারে nano, vim, emacs, gedit, pluma, ইত্যাদি সম্পাদক সালে আউট মন্তব্য লাইন নাম ফাইল যেগুলি আপনি না একটি স্থাপন দ্বারা স্থানান্তর করতে চান #তাদের শুরুতে। কিছু সম্পাদক এই লাইনগুলিকে আলাদাভাবে হাইলাইট করবে এমনকি যখন এটি আপনার ফাইলটিকে যে কোনও ফর্ম্যাট হিসাবে জানায় যাতে এটির মন্তব্য রয়েছে সেটিকে স্বীকৃতি দেয় না। যদিও বেশিরভাগই তা করবে না এবং আসল কারণটি আমি এইভাবে করার পরামর্শ দিচ্ছি যে একজন মানুষ হিসাবে আপনাকে সম্ভবত কনফিগারেশন ফাইলগুলিতে মন্তব্য করার অভিজ্ঞতা থাকতে পারে (এবং সম্ভবত সোর্স কোডেও)। আমি মনে করি এটা আরও বেশি ধারণাসম্পন্ন, এবং ফলে ভুলত্রুটির সম্ভাবনা হ্রাস হয়, তুলনায় এটি লাইন আপনি চিহ্নিত করতে হবে না স্থানান্তর করতে চান।

অবশ্যই, পরিবর্তে আপনি যে ফাইলগুলি সরাতে চান না তার জন্য কেবল লাইনগুলি মুছতে পারেন। তাদের মন্তব্য করার সুবিধা হ'ল আপনি কী করেছেন তা পরে তা পরিষ্কার হয়ে যাবে।

আমার উদাহরণে, ফাইলটি সম্পাদনা করার পরে ফাইলের বিষয়বস্তুগুলির দেখতে এটি দেখতে হ'ল:

Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm

তারপরে আপনি মন্তব্য করা রেখাগুলি ফিল্টার করতে পারেন grepএবং ফলাফলটি এগুলিতে দেওয়ার জন্য পাইপ xargsকরতে পারেন mv:

grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'

উপরে হিসাবে, Glorious Destination Folderপ্রকৃত গন্তব্য নাম দিয়ে প্রতিস্থাপন । এটাই; আপনার ফাইল সরানো হয়েছে আপনি অবশ্যই লিখে পারেন echoআগে mvকমান্ড যে প্রথম চলবে, যদি আপনি চান দেখতে।

কমান্ডটি যেভাবে কাজ করে তা হল:

  1. grepকমান্ড আউটপুট লাইন থেকে manifestযে না ( -v) (শুরু ^ঐচ্ছিক (সঙ্গে) *) হোয়াইটস্পেস ( \s) একটি আক্ষরিক দ্বারা অনুসরণ #অক্ষর। -Pপতাকা রেগুলার এক্সপ্রেশন উপভাষা হিসেবে PCRE নির্বাচন (যা সম্ভব \sযা আমি ঐতিহ্যগত চেয়ে বেশি পাঠযোগ্য বিবেচনা [[:space:]])।
  2. xargsকমান্ড তার ইনপুট (যার আউটপুট ভাগ grepসম্পর্কে newline-সমাপ্ত ক্ষেত্র (মধ্যে) -d '\n',) তারপর (সসীম সম্পর্কে newline ছাড়া) প্রতিটি ক্ষেত্রের পেস্ট কমান্ড শেষে একটি পৃথক আর্গুমেন্ট হিসাবে mv -t 'Glorious Destination Folder', যা এটি চালানো হয়।

1
-okআইএমএইচও সেরা উত্তর
পিম করুন

7

এখানে একটি ছোট স্ক্রিপ্ট ( mv-confirm.sh):

#!/bin/bash

# Just make sure there are at least one source and one destination
if [ "$#" -lt 2 ]; then
    echo "Illegal number of parameters"
fi

DESTINATION=${*:$#}             # last argument
SOURCES=( ${@:1:$#-1} )         # all but last arguments

for i in "${SOURCES[@]}"
do
    read -p "move '$i' to '$DESTINATION' ? [y/n] " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]
    then
        echo mv "$i" "$DESTINATION"
    fi
done

নমুনা ব্যবহার:

./mv-confirm.sh ** somewhere
move 'a' to 'somewhere' ? [y/n] n
move 'b' to 'somewhere' ? [y/n] y
mv b d
...

স্ক্রিপ্টটি সম্পাদনযোগ্য করতে ভুলবেন না ( chmod +x mv-confirm.sh)

বিশেষ দ্রষ্টব্য

যেহেতু আমি আপনার ফাইলগুলির সাথে গোলযোগ করতে চাই না, তাই আমি echoআসল mv কমান্ডের আগে যুক্ত করেছি । ফাইলগুলি সরানোর জন্য নির্দ্বিধায় এটিকে মুক্ত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.