আপনার নির্বাচিত সমস্ত ফাইলের সাথে এক সাথে কেবল একটি ফাইলের সাথে কাজ করা কমান্ডগুলি কীভাবে ব্যবহার করবেন

অনেক সময় আমাদের পিডিএফকে পাঠ্যে রূপান্তর করতে,। ডক ফাইলগুলিকে এইচটিএমএল ইত্যাদিতে রূপান্তর করতে স্ক্রিপ্ট চালানো দরকার; মুল বক্তব্যটি হ'ল এই কমান্ডগুলি কেবল একবারে একটি ফাইল গ্রহণ করে এবং এটি বেশ ক্লান্তিকর যদি আমাদের বেশ কয়েকটি ফাইলে একই কাজটি করা প্রয়োজন, বিশেষত যখন আমরা কোনও স্ক্রিপ্ট করি।

আমি এই সমস্যাটি ব্যবহার করে সমাধানের প্রস্তাব দিই 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

এক্ষেত্রে আউটপুট ফাইল নির্বাচন করা দরকার না কারণ পিডিফোটটেক্সট স্বয়ংক্রিয়ভাবে বেস নাম এবং .txt ছাড় সহ একটি পাঠ্য ফাইল উত্পন্ন করে যদি আপনি কেবল কোনও একক ফাইল নিয়ে কাজ করছেন।

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

অতিরিক্ত উদ্ধৃতি অবশ্যই একটি স্থানের সাথে পৃথক করতে হবে যেখানে "$ 0" বিকল্পটি ব্যবহৃত হয়
উদাহরণ
"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"

ডানা


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   Ramiro তিনি বলেন

    এটি কি খুব বেশি হবে না তবে নিয়মিত অভিব্যক্তি বা ওয়াইল্ডকার্ড ব্যবহার করে এগুলি করা খুব বেশি সহজ? এর সাথে আপনার জীবনকে এত জটিল করে তোলার মধ্যে পার্থক্য কী তা আমি বুঝতে পারি না।

  2.   ক্রোটো তিনি বলেন

    সত্য তাই, আপনি লিনাক্স কমান্ড সম্পর্কে দুর্দান্ত জ্ঞান আছে। খুব দরকারী!

    1.    কেজেডিজি ^ গারা তিনি বলেন

      হ্যাঁ, আমি জানি আমরা এখানে তাঁর চারপাশে অনেক কিছু শিখব হাহাহাহা।

  3.   হেক্সবার্গ তিনি বলেন

    আমি মনে করি এটি অনেক সহজ:

    ls -d /path/to/folder/*.ext | ফাইল পড়ার সময়; কম্যান্ড "$ ফাইল" করুন; সম্পন্ন

    কম্যান্ডের পরিবর্তে আপনি যা খুশি রাখতে পারেন এবং ফাইলগুলি ফাঁকা ফাঁকা স্থান রয়েছে এমনকি যতক্ষণ না আপনি $ ফাইলটি কোটের মধ্যে রাখেন। আপনাকে সেড ব্যবহার করার প্রয়োজন হবে না বা awk দিয়ে কমান্ড তৈরি করতে হবে না। এছাড়াও এটি আরও কম প্রক্রিয়া চালু করে।

    1.    Ankh তিনি বলেন

      o:
      আমি in (ls -d /path/a/folder/*.ext) এর জন্য; কম্যান্ড করুন “$ i”; সম্পন্ন;

      1.    হেক্সবার্গ তিনি বলেন

        এটি দেখতে দুর্দান্ত, তবে ফাইলের নামের ফাঁকা থাকলে এটি কাজ করে না। 🙂

        1.    তাহাড তিনি বলেন

          আসলে, হেক্সবার্গ কেন এই বিকল্পের সাহায্যে প্রতিটি লাইনের জন্য আউটপুট পাঠ্যটি শুরুতে এবং শেষে উদ্ধৃত করা হয়:
          ls irectডাইরেক্টরি | সেড 's / ^ / »/' | সেড 's / $ / »/'

          আমি স্পষ্ট করে বলছি যে সাবডাইরেক্টরিগুলি অনুসন্ধান করতে ব্যবহার করা যেতে পারে।

          1.    হেক্সবার্গ তিনি বলেন

            তবে আমার কৌতুকের সাথে আপনার দরকার নেই। ls প্রতিটি লাইনে একটি করে পুরো ফাইলের নাম বের করে এবং লাইনে পঠন করে পাঠায় এবং ফাঁকা ফাঁকা স্থান রয়েছে কিনা তা ফাইলের ভেরিয়েলে ফাইলের নাম রেখে দেয়। কমান্ডটিতে এটি ব্যবহার করার সময় আপনাকে কেবলমাত্র $ ফাইলের চারপাশে উদ্ধৃতি স্থাপন করতে হবে।

          2.    হুগো তিনি বলেন

            আমি সম্মত যে অনুসন্ধানে এটি কম জটিল হতে পারে। নিবন্ধ থেকে এই উদাহরণটি নেওয়া যাক:

            ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "pdftotext",$0}' | sh

            এটি একইভাবে সম্পন্ন হতে পারে এবং এটি সম্ভবত দ্রুত চালিত হবে:

            find . -type f -print0 | xargs -0 pdftotext

            এটি বলেছিল, নিবন্ধটি স্বাগত, কিছু করার বিকল্প উপায় সম্পর্কে শেখা সর্বদা ভাল।

        2.    Ankh তিনি বলেন

          আপনি যদি লক্ষ্য করেন তবে $ i উদ্ধৃতিগুলিতে রয়েছে। এটি হোয়াইটস্পেসের অব্যাহতি অপ্রয়োজনীয় করে তোলে।

          1.    হেক্সবার্গ তিনি বলেন

            হ্যাঁ, তবে $ () অপারেটর কোথাও কোট না লাগিয়ে ফাইলের নামগুলি প্রসারিত করে, তাই আমি ইতিমধ্যে কাটা ফাইলগুলির নামটি ভেরিয়েবলটি ধরছি। একটি ডিরেক্টরিতে একটি টার্মিনালে এটি ব্যবহার করে দেখুন যাতে নামে ফাঁকা স্থান রয়েছে।

  4.   সিংহরাশি তিনি বলেন

    খুব ভাল, জটিল, কিন্তু খুব আকর্ষণীয়।

  5.   হেলেনা_রিউ তিনি বলেন

    এটি আশ্চর্যজনক, দুর্দান্ত !!!!

  6.   msx তিনি বলেন

    দুর্দান্ত, জিএনইউ / লিনাক্সের প্লাস্টিকের কোনও সীমা নেই।

  7.   নাতালিয়া তিনি বলেন

    প্রিয় ব্লগার,

    আমি নাটালিয়া, পেপারব্লগে যোগাযোগ ব্যবস্থাপক। এটি আবিষ্কার করার পরে, আমি আপনাকে পেপারব্লগ প্রকল্পটি জানতে আমন্ত্রণ জানাতে যোগাযোগ করছি, http://es.paperblog.com, একটি নতুন নাগরিক সাংবাদিকতা পরিষেবা। পেপারব্লগ একটি ডিজিটাল প্ল্যাটফর্ম যা কোনও ব্লগ ম্যাগাজিনের মতো নিবন্ধিত ব্লগগুলির সেরা নিবন্ধগুলি প্রকাশ করে।

    ধারণাটি যদি আপনার আগ্রহী হয় তবে আপনাকে কেবল অংশ নিতে আপনার ব্লগের প্রস্তাব দিতে হবে। নিবন্ধগুলি প্রত্যেকটির শুরুতে এবং শেষে আপনার মূল নাম / ছদ্মনাম এবং প্রোফাইল ফাইলের সাথে থাকবে blog সর্বাধিক আকর্ষণীয় বিষয়গুলি কভার পৃষ্ঠায় উপস্থিত হওয়ার জন্য দলটি বাছাই করতে পারে এবং আপনি দিনের লেখক হিসাবে নির্বাচিত হতে পারেন।

    আমি আশা করি আপনি যে প্রকল্পটি দ্বারা আমরা 2010 সালের জানুয়ারিতে এই জাতীয় উত্সাহ দিয়ে শুরু করেছি দ্বারা অনুপ্রাণিত হয়েছি। একবার দেখুন এবং আরও বিবরণের জন্য আমাকে লিখতে দ্বিধা করবেন না।

    একটি আন্তরিক এবং স্নেহময় সম্ভাষণ গ্রহণ করুন,
    নাতালিয়া