অনেক সময় আমাদের পিডিএফকে পাঠ্যে রূপান্তর করতে,। ডক ফাইলগুলিকে এইচটিএমএল ইত্যাদিতে রূপান্তর করতে স্ক্রিপ্ট চালানো দরকার; মুল বক্তব্যটি হ'ল এই কমান্ডগুলি কেবল একবারে একটি ফাইল গ্রহণ করে এবং এটি বেশ ক্লান্তিকর যদি আমাদের বেশ কয়েকটি ফাইলে একই কাজটি করা প্রয়োজন, বিশেষত যখন আমরা কোনও স্ক্রিপ্ট করি।
আমি এই সমস্যাটি ব্যবহার করে সমাধানের প্রস্তাব দিই ls, কিন্তু, , grep, অজস্র y sh। আমরা যা করব তা হ'ল প্রতিটি সারিতে সঠিক কমান্ড লাইন তৈরি করা এবং sh দ্বারা সেগুলি কার্যকর করা এবং sh যেহেতু একবারে একটি লাইন চালায়, তাই রাম মেমরির ব্যবহার বাড়বে না, যা অন্যান্য পদ্ধতির সাহায্যে এমনকি আন্ডার পাওয়ার্ড মেশিনগুলিকে হিম করতে পারে।
আসুন দেখুন এই কমান্ড সিকোয়েন্সটি কীভাবে সম্পাদন করা যায়।
1- আমাদের প্রথমে যে কাজটি করতে হবে তা হ'ল ফাইলগুলি প্রবেশ করানো ls:
ls --directory /camino/a/carpeta/*.ext
2- তারপরে কোটগুলি পাস করার জন্য আমাদের এই ফাইলগুলির প্রয়োজন হবে «/ পাথ / এর গোষ্ঠীতে
নথি পত্র«
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/'
3- এখন অজস্র এটি তথ্য গ্রহণের জন্য প্রস্তুত থাকবে।
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/' | awk '{print $0}'
কারণ অজস্র আমাদের নিজস্ব ভাষা আছে আমাদের উদ্ধৃতিগুলি আলাদা করতে হবে যা আমরা অন্য ফাংশনগুলির মধ্যে একটি পাঠ্য উদ্ধৃত করতে চাই যা আমাদের ব্যাকস্ল্যাশ ব্যবহার করতে হবে \ আসুন দেখি কীভাবে কিছু আলাদা করা যায়।
একটি উদ্ধৃতি আলাদা করুন
\”
আউটপুটে একটি ব্যাকস্ল্যাশ দেখান (আমাদের তিনটি বার টাইপ করতে হবে)
\\\
কখনও কখনও আমাদের একটি বিচ্ছিন্ন বিভাজকের প্রয়োজন হবে, কেবলমাত্র দুটি পাঠের মধ্যে প্রদর্শিত পাঠ্য বা উদ্ধৃতিগুলির আউটপুট হবে:
'""'\"\'""'
4- কমান্ডটি ব্যবহার করে তালিকাভুক্ত সমস্ত ফাইলের পুনরায় নামকরণ কিভাবে করা যাক mv শুধু একটি প্রত্যয় প্রবেশ করতে। (এখন ফাইলটি তালিকাভুক্ত করার জন্য আমাদের যখনই এটি ব্যবহারের প্রয়োজন হবে তখন "$ 0" সংমিশ্রণটি ব্যবহার করতে হবে)
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/' | awk '{print "mv "$0" \"`dirname
"$ 0 ″" / পাঠ্য-যে কোনও `বাসনেম "$ 0 ″" \ ""} '| sh
পূর্ববর্তী ক্রম হিসাবে সংমিশ্রণে প্রদর্শিত হিসাবে নোটটি শেষে যুক্ত করা হয়েছে « | শ »যা পাইপলাইনটিকে এই কমান্ড ইন্টারপ্রেটারে পুনঃনির্দেশ করে
স্ক্রিপ্ট তৈরির জন্য প্রস্তুত কয়েকটি উদাহরণ দেখুন।
উদাহরণ:
1- পাঠ্য ফাইলে তালিকাভুক্ত সমস্ত পিডিএফ রূপান্তর করুন।
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "pdftotext",$0}' | sh
2- ধরা যাক আমরা কোনও ইমেজটিতে একটি প্রভাব প্রয়োগ করতে চাই তবে মূলটি পরিবর্তন না করে আসুন ওয়েভ উইন্ডোজ এক্সপি লোগোর জন্য সুপরিচিত ওয়েভ এফেক্টের সাথে একটি উদাহরণ দেখি, যেহেতু এটি avyেউয়ের প্রভাব সহ একটি পতাকা (এই প্রভাবটির আরও প্রশংসা করার জন্য এটি হিসাবে ব্যবহার করার প্রস্তাব দেওয়া হয়) এক্সটেনশন .png সহ ফলাফলের চিত্র)।
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="convert -wave 25x150
"$0"","\"\`dirname "$0"`/`basename "$0" | sed '"'"s/\\\\.[[:alnum:]]*$//"'"'`-wave.`basename "$0" |
rev | awk -F . \'"'"'\{print $1}\'"'"'\ | rev`'""'\"\'""' "}' | sh
দ্রষ্টব্য: এই ক্রমটিতে বেশ কয়েকটি পাস করা হয়েছে:
- ফাইলটি যেখানে নামটি সহ অবস্থিত সেখানে ফোল্ডারটি পেতে
- বেস নামটি পেতে অন্যটি, তবে সেই ফাইলটির বর্ধিতাংশ সরিয়ে ফেলতে হবে
- অন্যটি বলেন ফাইলটির ছাড় পাওয়ার জন্য।
3- আসুন এখন দেখুন কীভাবে নামের সামনে (সংখ্যার প্রত্যয়) সামনে সংযুক্ত নম্বর রেখে ফাইলের একটি নামকরণ করবেন।
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="mv "$0" '""'\"\'""'`dirname
"$0"`/"FNR"-`basename "$0"`'""'\"\'""' "}' | sh
আসুন দেখুন কীভাবে একটি সংখ্যার উপসর্গ স্থাপন করবেন (শেষে একটি সংখ্যা রাখুন, তবে ছাড়ের আগে) এই বিকল্পটি কেবলমাত্র বৈধ যদি ফাইলের একটি থাকে।
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="mv "$0" \"`dirname
"$0"`/`basename "$0" | sed '\'s/\\\\.[[:alnum:]]*$//\''`-"FNR".`echo "$0" | rev | awk -F .
'""'\'\'""'{print $1}'""'\'\'""' | rev `\" " }' | sh
4- আসুন একটি উদাহরণ দেখুন যেখানে আমাদের ডেটা প্রবেশ করতে হবে বা ফাংশনগুলির একটি গ্রুপ নির্বাচন করতে হবে, উদাহরণস্বরূপ গ্রহণ করার ক্ষেত্রে আমরা একই পাসওয়ার্ডযুক্ত বেশ কয়েকটি পিডিএফ ফাইল থেকে পাসওয়ার্ড সুরক্ষা অপসারণ করি। (এক্ষেত্রে আমরা জেনটিটি ডায়ালগ বক্স হিসাবে ব্যবহার করব)
zenity --entry --hide-text --text "introduzca la clave de desbloqueo" > $HOME/.cat && ls
--directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="pdftk "$0" input_pw `cat
$HOME/.cat` output \"`dirname "$0"`/`basename "$0" .pdf`-unlock.pdf\" "}' | sh && rm
$HOME/.cat
যেমনটি আপনি দেখেছেন, উদ্দেশ্য হ'ল একটি ফাইলের একটি বিড়াল তৈরি করা যা কেবল একবার লাইনের শুরুতে তৈরি করা হবে এবং তারপরে রূপান্তরটি সম্পূর্ণ হয়ে গেলে মুছে ফেলা হবে।
5- আর একটি ইউটিলিটি হ'ল, যখন আমাদের .zip মধ্যে কমপ্যাক্ট করা বেশ কয়েকটি ফাইল ডিকম্প্রেস করতে হবে
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "unzip -x "$0" "}' | sh
উদাহরণ
"unzip -x "$0" "
6- আসুন একটি পাসওয়ার্ড সহ পিডিএফ সুরক্ষার জন্য একটি উদাহরণ দেখুন, পড়ার অনুমতি দিলেও মুদ্রণ অনুলিপি বা অন্যান্য বিকল্পগুলির বিরুদ্ধে সুরক্ষিত, (ডায়ালগ বাক্সে তালিকাভুক্ত অপশনগুলি পিডিএফ-এ অনুমোদিত হবে, আপনি যদি তাদের কোনওটির অনুমতি না দিতে চান তবে না কিছুই না).
zenity --separator " " --multiple --text "Seleccione los Opciones que quiere permitir" --column "Opciones" --list "Printing" "DegradedPrinting" "ModifyContents" "CopyContents" "ScreenReaders" "ModifyAnnotations" "AllFeatures" > $HOME/.cat && zenity --entry --hidetext --text "Teclee la contraseña de protección" > $HOME/.cat2 && ls --directory "$@" | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="echo \"pdftk \\\"`echo "$0"`\\\" output \\\"`dirname "$0"`/`basename "$0" .pdf`-locked.pdf\\\" allow `cat $HOME/.cat` owner_pw \"`cat $HOME/.cat2`\"\" | sh "}' | sh && rm $HOME/.cat $HOME/.cat2
এই উদাহরণগুলির সাথে এটি একাধিক ফাইলকে একক স্ক্রিপ্টে রূপান্তর, সংশোধন বা নতুন নামকরণ এবং একের পর এক সেগুলি রূপান্তর না করার বিকল্পটি কীভাবে ব্যবহার করতে হয় তা বেশ উদাহরণস্বরূপ। এই অপশনের সাথে থাকা মেমরির ব্যবহারটি ন্যূনতম, ব্যবহৃত হচ্ছে এমন কমান্ডের উপর নির্ভর করে যেহেতু এটি তাদের একই সময়ে নয় তবে একের পর এক রূপান্তর করে।
ls --directory %F | sed 's/^/"/' | sed 's/$/"/' | awk '{print "script-convertir-video "$0" "}' | sh && zenity --info --text "Todas las conversiones han terminado"
ডানা
এটি কি খুব বেশি হবে না তবে নিয়মিত অভিব্যক্তি বা ওয়াইল্ডকার্ড ব্যবহার করে এগুলি করা খুব বেশি সহজ? এর সাথে আপনার জীবনকে এত জটিল করে তোলার মধ্যে পার্থক্য কী তা আমি বুঝতে পারি না।
সত্য তাই, আপনি লিনাক্স কমান্ড সম্পর্কে দুর্দান্ত জ্ঞান আছে। খুব দরকারী!
হ্যাঁ, আমি জানি আমরা এখানে তাঁর চারপাশে অনেক কিছু শিখব হাহাহাহা।
আমি মনে করি এটি অনেক সহজ:
ls -d /path/to/folder/*.ext | ফাইল পড়ার সময়; কম্যান্ড "$ ফাইল" করুন; সম্পন্ন
কম্যান্ডের পরিবর্তে আপনি যা খুশি রাখতে পারেন এবং ফাইলগুলি ফাঁকা ফাঁকা স্থান রয়েছে এমনকি যতক্ষণ না আপনি $ ফাইলটি কোটের মধ্যে রাখেন। আপনাকে সেড ব্যবহার করার প্রয়োজন হবে না বা awk দিয়ে কমান্ড তৈরি করতে হবে না। এছাড়াও এটি আরও কম প্রক্রিয়া চালু করে।
o:
আমি in (ls -d /path/a/folder/*.ext) এর জন্য; কম্যান্ড করুন “$ i”; সম্পন্ন;
এটি দেখতে দুর্দান্ত, তবে ফাইলের নামের ফাঁকা থাকলে এটি কাজ করে না। 🙂
আসলে, হেক্সবার্গ কেন এই বিকল্পের সাহায্যে প্রতিটি লাইনের জন্য আউটপুট পাঠ্যটি শুরুতে এবং শেষে উদ্ধৃত করা হয়:
ls irectডাইরেক্টরি | সেড 's / ^ / »/' | সেড 's / $ / »/'
আমি স্পষ্ট করে বলছি যে সাবডাইরেক্টরিগুলি অনুসন্ধান করতে ব্যবহার করা যেতে পারে।
তবে আমার কৌতুকের সাথে আপনার দরকার নেই। ls প্রতিটি লাইনে একটি করে পুরো ফাইলের নাম বের করে এবং লাইনে পঠন করে পাঠায় এবং ফাঁকা ফাঁকা স্থান রয়েছে কিনা তা ফাইলের ভেরিয়েলে ফাইলের নাম রেখে দেয়। কমান্ডটিতে এটি ব্যবহার করার সময় আপনাকে কেবলমাত্র $ ফাইলের চারপাশে উদ্ধৃতি স্থাপন করতে হবে।
আমি সম্মত যে অনুসন্ধানে এটি কম জটিল হতে পারে। নিবন্ধ থেকে এই উদাহরণটি নেওয়া যাক:
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "pdftotext",$0}' | sh
এটি একইভাবে সম্পন্ন হতে পারে এবং এটি সম্ভবত দ্রুত চালিত হবে:
find . -type f -print0 | xargs -0 pdftotext
এটি বলেছিল, নিবন্ধটি স্বাগত, কিছু করার বিকল্প উপায় সম্পর্কে শেখা সর্বদা ভাল।
আপনি যদি লক্ষ্য করেন তবে $ i উদ্ধৃতিগুলিতে রয়েছে। এটি হোয়াইটস্পেসের অব্যাহতি অপ্রয়োজনীয় করে তোলে।
হ্যাঁ, তবে $ () অপারেটর কোথাও কোট না লাগিয়ে ফাইলের নামগুলি প্রসারিত করে, তাই আমি ইতিমধ্যে কাটা ফাইলগুলির নামটি ভেরিয়েবলটি ধরছি। একটি ডিরেক্টরিতে একটি টার্মিনালে এটি ব্যবহার করে দেখুন যাতে নামে ফাঁকা স্থান রয়েছে।
খুব ভাল, জটিল, কিন্তু খুব আকর্ষণীয়।
এটি আশ্চর্যজনক, দুর্দান্ত !!!!
দুর্দান্ত, জিএনইউ / লিনাক্সের প্লাস্টিকের কোনও সীমা নেই।
প্রিয় ব্লগার,
আমি নাটালিয়া, পেপারব্লগে যোগাযোগ ব্যবস্থাপক। এটি আবিষ্কার করার পরে, আমি আপনাকে পেপারব্লগ প্রকল্পটি জানতে আমন্ত্রণ জানাতে যোগাযোগ করছি, http://es.paperblog.com, একটি নতুন নাগরিক সাংবাদিকতা পরিষেবা। পেপারব্লগ একটি ডিজিটাল প্ল্যাটফর্ম যা কোনও ব্লগ ম্যাগাজিনের মতো নিবন্ধিত ব্লগগুলির সেরা নিবন্ধগুলি প্রকাশ করে।
ধারণাটি যদি আপনার আগ্রহী হয় তবে আপনাকে কেবল অংশ নিতে আপনার ব্লগের প্রস্তাব দিতে হবে। নিবন্ধগুলি প্রত্যেকটির শুরুতে এবং শেষে আপনার মূল নাম / ছদ্মনাম এবং প্রোফাইল ফাইলের সাথে থাকবে blog সর্বাধিক আকর্ষণীয় বিষয়গুলি কভার পৃষ্ঠায় উপস্থিত হওয়ার জন্য দলটি বাছাই করতে পারে এবং আপনি দিনের লেখক হিসাবে নির্বাচিত হতে পারেন।
আমি আশা করি আপনি যে প্রকল্পটি দ্বারা আমরা 2010 সালের জানুয়ারিতে এই জাতীয় উত্সাহ দিয়ে শুরু করেছি দ্বারা অনুপ্রাণিত হয়েছি। একবার দেখুন এবং আরও বিবরণের জন্য আমাকে লিখতে দ্বিধা করবেন না।
একটি আন্তরিক এবং স্নেহময় সম্ভাষণ গ্রহণ করুন,
নাতালিয়া