আমি কীভাবে লিঙ্কযুক্ত টিউটোরিয়ালে নোটপ্যাড ++ এর মতো একাধিক ফাইলের মধ্যে একটি নির্দিষ্ট পাঠ খুঁজে পেতে এবং প্রতিস্থাপন করতে পারি তা জানতে চাই।
উদাহরণস্বরূপ: http://cybernetnews.com/find-replace-mpleple-files/
আমি কীভাবে লিঙ্কযুক্ত টিউটোরিয়ালে নোটপ্যাড ++ এর মতো একাধিক ফাইলের মধ্যে একটি নির্দিষ্ট পাঠ খুঁজে পেতে এবং প্রতিস্থাপন করতে পারি তা জানতে চাই।
উদাহরণস্বরূপ: http://cybernetnews.com/find-replace-mpleple-files/
উত্তর:
এখানে আমি "সাইবারনেটনিউজ" শব্দের প্রতিটি ঘটনাকে প্রতি ফাইলের "সাইবারনেট" এর সাথে এক্সটেনশন, সি, ডিরেক্টরিতে, / হোম / ব্যবহারকারী / ডিরেক্টরি / সাথে প্রতিস্থাপন করতে ব্যবহার করব sed
find /home/user/directory -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;
আরও সাধারণ প্রকরণ যেখানে আপনি এক্সিকিউটিভের ডিরেক্টরি থেকে পুনরাবৃত্তভাবে অনুসন্ধান করেন এবং কেবল নিয়মিত, পাঠযোগ্য, লিখনযোগ্য ফাইলগুলিতে পরিচালনা করেন:
find ./ -type f -readable -writable -exec sed -i "s/cybernetnews/cybernet/g" {} \;
cyber net news? আমি কীভাবে এটিকে রূপান্তর করতে cyber netপারি?
স্ট্রিম এডিটর, সেড, এই ধরণের কাজের জন্য একটি শক্তিশালী ইউটিলিটি এবং এটি আমার প্রথম পছন্দ, তবে আপনি যদি কোনও উবুন্টু ভিত্তিক নেটিভ অ্যাপ্লিকেশন ব্যবহার করে কোনও সাধারণ পাঠ্য সম্পাদক থেকে এটি করতে চান তবে আমি আপনাকে জেদিতের দিকে একবার নজর দেওয়ার পরামর্শ দেব , এটি সংগ্রহস্থলগুলিতে উপলভ্য এবং আপনার কনসোলে টাইপ করে ইনস্টল করা যেতে পারে:
sudo apt-get install jedit
শুরু করুন

এটি নোটপ্যাড ++ এর মতো এবং একই জিনিসটি করে, আমি বিশ্বাস করি এটি আপনি চান এটি।
sed।
আর একটি জিইউআই বিকল্প হ'ল রেজিএক্সএক্সার :

জিনির সাথে পরীক্ষা করুন , এটি লিনাক্সের জন্য উপযুক্ত এনপিপি প্রতিস্থাপন replacement আপনি ঠিক সেই প্লাসটি করতে পারেন আপনি পুনরায় ব্যবহার করতে পারেন।
আমি শুধু এই জিনিসটির জন্য একটি ছোট স্ক্রিপ্ট লিখেছি। আপনার যদি কেবলমাত্র বেসিকগুলির প্রয়োজন হয় এবং সেড ইত্যাদির সাথে পরিচিত না হন তবে এখানে একবার দেখুন: http://www.csrc.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -a-সেট-ফাইল /
লিপিটি নিম্নলিখিত:
for f in submit_*;
do sed "s/old_db_name/new_db_name/" < $f > a_$f ;
mv a_$f $f ;
done
আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন, কোডটি অনুলিপি করুন এবং একটি ফাইল তৈরি করতে পারেন find_and_replace_in_files.sh।
আমি এটিকে কিছুটা সংশোধন করেছি; আপনার মতামত আমাকে বলুন
# *****************************************************************************************
# find_and_replace_in_files.sh
# This script does a recursive, case sensitive directory search and replace of files
# To make a case insensitive search replace, use the -i switch in the grep call
# uses a startdirectory parameter so that you can run it outside of specified directory - else this script will modify itself!
# *****************************************************************************************
!/bin/bash
# **************** Change Variables Here ************
startdirectory="/your/start/directory"
searchterm="test"
replaceterm="test=ok!"
# **********************************************************
echo "***************************************************"
echo "* Search and Replace in Files Version 01-Aug-2012 *"
echo "***************************************************"
i=0;
for file in $(grep -l -R $searchterm $startdirectory)
do
cp $file $file.bak
sed -e "s/$searchterm/$replaceterm/ig" $file > tempfile.tmp
mv tempfile.tmp $file
let i++;
echo "Modified: " $file
done
echo " *** All Done! *** Modified files:" $i
আরেকটি প্রোগ্রাম হ'ল সার্চমনকি ।
সার্চমনকি একটি হালকা ওজনের জিটিকে অ্যাপ্লিকেশন যার লক্ষ্য হল চটজলদি অনুসন্ধান / গ্রেপকে একটি চটজলদি ব্যবহারকারীর ইন্টারফেসের সাথে প্রতিস্থাপন করা যা দ্রুত স্থান এবং পাঠ্য মিলগুলির পরিমাণ প্রদর্শন করে একটি মার্ক-আপ সরবরাহ করে। লক্ষ্যটি হ'ল শেষ ব্যবহারকারী-ও সফ্টওয়্যার বিকাশকারীদের জন্য ব্যবহারের জন্য সহজ এবং অ্যাক্সেসযোগ্য অনুসন্ধান সরঞ্জাম সরবরাহ করা।
find . -name "*.txt" |xargs sed -i "s/searched_Text/replacement_Text/g"
ফেডোরাতে আমার জন্য কাজ করে
sedউদাহরণ চালায় ! সুতরাং এটি সিপিইউ সময়ের নিরিখে অনেক দ্রুত। কারণ ফাইল অ্যাক্সেসের সময় সীমাবদ্ধ থাকবে, আমি মনে করি এটি ঘড়ির সময় খুব বেশি দ্রুত নয়, তবে নিম্ন সিস্টেমের লোড দেয়। নোটটি xargsএকক sedকমান্ডের কমান্ডলাইনে ফাইল নামগুলির মতো হান্ডার্ডারদের মতো প্রচুর পরিমাণে রাখবে - পাথের দৈর্ঘ্যের ভিত্তিতে উপলব্ধ বাফার আকারটি পূরণ করবে filling
+তার পরিবর্তে অর্জন করা যায় ? \;find
xargsতবে আপনি ঠিক বলেছেন; থেকে man find: -exec command {} +: ... The command line is built in much the same way that xargs...। আমাকে git filter-branch...;) এর কমান্ডের লাইনগুলি সম্পর্কে ভাবিয়ে তোলে
খুব সহজ সমাধান: সব প্রতিস্থাপন *.txtফোল্ডারে ফাইল string_1সঙ্গে string_2:
sed -i 's/string_1/string_2/g' *.txt
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)