tar
এটি আপনার জন্য সত্যিই দ্রুত করবে।
পরীক্ষা
প্রথমে আমি 2 টি ডিরেক্টরি এবং 10 টি ফাইল তৈরি করেছি:
% mkdir test1 test2 ; cd test1
% for n in `seq 1 10` ; do touch ABC.file$n ; done
% ls
> ABC.file1 ABC.file2 ABC.file4 ABC.file6 ABC.file8
> ABC.file10 ABC.file3 ABC.file5 ABC.file7 ABC.file9
তারপরে আমি সেগুলি অনুলিপি করেছিলাম:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC/DEF/' -xf -
% ls ../test2
> DEF.file1 DEF.file2 DEF.file4 DEF.file6 DEF.file8
> DEF.file10 DEF.file3 DEF.file5 DEF.file7 DEF.file9
রূপান্তরিত
সুতরাং জিএনইউ ফাইল নামকরণের জন্য tar
একটি গ্রহণ করবে sed --transform=EXPRESSION
। এমনকি এটি কেবলমাত্র কয়েকটি ফাইলের নাম পরিবর্তন করতে পারে। এই ক্ষেত্রে:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC\(.*[0-5]\)/DEF\1/' -xf -
% ls ../test2
> ABC.file6 ABC.file8 DEF.file1 DEF.file2 DEF.file4
> ABC.file7 ABC.file9 DEF.file10 DEF.file3 DEF.file5
সুতরাং যে এক সুবিধা।
STREAM
এছাড়াও বিবেচনা করুন যে এটি কেবল দুটি tar
প্রক্রিয়া - এবং এটি আপনার ফাইলের গণনা ছাড়াই পরিবর্তিত হবে না।
tar | tar
tar
আপনি এটি হতে পারে হিসাবে অপ্টিমাইজড হয়। এটিতে কখনই সমস্যার যুক্তি গণনা বা পলাতক শিশু প্রক্রিয়া থাকবে না। এটি কেবল এ> বি সম্পন্ন হয়েছে।
যুক্তি
আমি tar
এখানে আমার দুটি প্রক্রিয়ার মধ্যে মিলিত 7 স্বতন্ত্র আর্গুমেন্ট ব্যবহার করি । এখানে সর্বাধিক গুরুত্বপূর্ণ তালিকাবদ্ধ করা হয়েছে:
-
স্টাডাউট / স্টিডিন - এটি জানিয়ে দেয় tar
যে এটি এর ইনপুট বা আউটপুটটিতে স্ট্রিমিং করবে বা সেখান থেকে stdin/stdout
এটি কোনও সংরক্ষণাগার তৈরি বা নিষ্কাশন করছে কিনা তার উপর নির্ভর করে সঠিকভাবে ব্যাখ্যা করবে।
-c
তৈরি - tar
এটি সংরক্ষণাগারটি তৈরি করতে বলে । পরবর্তী যুক্তিটি tar
প্রত্যাশা করে ...
-f
ফাইল - আমরা নির্দিষ্ট করি যে এটি কোনও টেপ-ডিভাইস বা যা কিছু না করে tar
কোনও file
অবজেক্টের সাথে কাজ করবে । এবং উপরে উল্লিখিত হিসাবে এটি যে ফাইলটির সাথে কাজ করবে এটি হ'ল stdin/stdout
- অন্য কথায়, আমাদের |pipe
।
./*
সমস্ত $ পিডাব্লুডি / ফাইল - সংরক্ষণাগার যুক্তিটি প্রথমে আসে, তবে -
তারপরে এখানে ব্যাখ্যা করার জন্য খুব বেশি কিছু নয় ./*
।
... এবং অন্যদিকে |pipe
...
-C
ডিরেক্টরি পরিবর্তন করুন - এটি জানায় tar
যে এটি অন্য যে কোনও ক্রিয়া সম্পাদন করার আগে আমি যে ডিরেক্টরিটিতে উল্লেখ করেছি সেটিতে এটি পরিবর্তন করা দরকার, তাই কার্যকরভাবে এটি cd ../test2
নিষ্কাশনের ঠিক আগে।
--transform='s/ed/EXPR/'
- যেমন ইতিমধ্যে উল্লিখিত হয়েছে, এটি নতুন নামকরণ করেছিল। তবে ডক্সটি নির্দেশ করে যে এটি কোনও sed
অভিব্যক্তি নিতে পারে বা //flag
।
-x
এক্সট্রাক্ট - tar
আমাদের টার্গেট ডিরেক্টরিতে পরিবর্তনের পরে এবং আমাদের পুনর্নামকরণের নির্দেশাবলী পেয়ে যায় আমরা -f - |pipe
সংরক্ষণাগার ফাইল থেকে এটির বর্তমান ডিরেক্টরিতে সমস্ত ফাইল বের করা শুরু করার নির্দেশ দিয়েছি । রহস্য নেই।
mc
এই নামকরণের পুনঃনামকরণের জন্য কোনও বদনামযোগ্য ফাইল ম্যানেজারের সর্বাধিক বিস্তৃত সমর্থন রয়েছে।