আমি vi সহ প্রথম অনুসন্ধানের ফলাফলটি খুলতে কমান্ডটি কীভাবে ব্যবহার করতে পারি?


5

যতবারই আমার কাছে কোনও ফাইল সন্ধান করা এবং তারপরে এটি খোলার প্রয়োজন হয় ততবার আমাকে ব্যবহার করতে হবে: সন্ধান করুন / / - নাম ****। , তারপরে ফলাফলটি অনুলিপি করুন এবং তারপরে vi "ফলাফলটি এখানে আটকান"। আমার যদি মাউস ব্যবহার করতে হয় তবে এটি একটু ঝামেলা হতে পারে। সুতরাং এটি করার আরও ভাল উপায় আছে?


কেবল দ্বিতীয় ফাইলটিই কি খোলা সম্ভব?
বোকা

./ -name * বৈশিষ্ট্য অনুসন্ধান করুন মাথা -2 | লেজ -1 আমি মনে করি এটি
এতটা

উত্তর:


2

আপনি একটি নির্দিষ্ট লাইন নম্বর প্রিন্ট করতে AWK বা সেড ব্যবহার করে একটি স্বেচ্ছাসেবী ফাইল খুলতে পারেন।

vi "$(find ./ -name **.properties | awk 'NR==2')"

অথবা

vi "$(find ./ -name **.properties | awk 'NR==2{print;quit}')"

অথবা

vi "$(find ./ -name **.properties | sed -n '2p')"

অথবা

vi "$(find ./ -name **.properties | sed -n '2{p;q}')"

বিপুল সংখ্যক ফাইল থাকলে সংস্করণগুলি quitবা qকিছুটা দ্রুত ফিরে আসে।


3
find . -name \*.properties | xargs -d '\n' vi

একক viদৃষ্টিতে সমস্ত ফাইল খুলবে । প্রথমটি খুলতে, ব্যবহার করুন

find . -name \*.properties | head -1 | xargs -d '\n' vi

GNU Findutils দিয়ে, find . -name '*.properties' -exec vi '{}' +প্রথমটি করবে।
প্রথম

কেবল দ্বিতীয় ফাইলটিই কি খোলা সম্ভব?
বোকা

@ প্রিমিয়েন্ট: না তা হবে না।
পুনরায় পোস্টার

@ বোকা: অবশ্যই:find . -name \*.properties | head -2 | tail -1 | xargs -d '\n' vi
পুনরায় পোস্টার

"না এটা হবে না" মানে কি? জিএনইউ সন্ধানী 4.5.9 সহ এখানে দুর্দান্ত কাজ করে।
প্রথম

3

যদি আপনি নিজের শেলটি zsh এ পরিবর্তন করেন তবে আপনার findখুব কম ঘন ঘন দরকার হবে , কারণ zsh আপনাকে findগ্লোব্বিংয়ের মাধ্যমে যা করতে পারে তার বেশিরভাগ ক্ষেত্রে অনুমতি দেয় । শুরু করার সাথে সাথে **/এর একটি বিশেষ অর্থ রয়েছে: বর্তমান ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে **/fooডেকে আনা ফাইলগুলিতে প্রসারিত হয় foo, অর্থাৎ এটি একই ফাইলগুলির সাথে মেলে find . -name foo। সুতরাং আপনি এর সাথে সমস্ত ম্যাচ সম্পাদনা করতে পারেন

vi **/*.properties

ব্যাশ 4.0 সাল থেকে, যদি আপনি করা shopt -s globstarআপনার ~/.bashrc, **/একই ভাবে আচরণ করে।

জেডএস-এ, গ্লোব কোয়ালিফায়ারকে ( zshexpnম্যান পৃষ্ঠার শেষের দিকে খুব সংক্ষিপ্তভাবে বর্ণনা করা হয়েছে) ধন্যবাদ আপনার কাছে আরও অনেক সম্ভাবনা রয়েছে । নীতিটি হ'ল ম্যাচের পরে প্রথম বা একাধিক কোয়ালিফায়ার যুক্ত করে ম্যাচগুলিকে সীমাবদ্ধ করা। উদাহরণস্বরূপ, .বাছাইকারী নিয়মিত ফাইলগুলিতে /সীমাবদ্ধ থাকে , তবে ডিরেক্টরিতে সীমাবদ্ধ করে। কোয়ালিফায়ার কেবল [1]প্রথম ম্যাচ ধরে রেখেছে; [1,4]প্রথম চারটি ম্যাচ ধরে রেখেছে; ইত্যাদি। উদাহরণস্বরূপ, প্রথমটি সম্পাদন করতে (পুরো পাথ লেক্সিকোগ্রাফিক ক্রমে) নিয়মিত ফাইল মেলানো *.properties:

vi **/*.properties(.[1])

আপনি যদি পরিবর্তে সর্বাধিক পরিবর্তিত মেলানো ফাইলটি সম্পাদনা করতে চান তবে আপনি omম্যাচগুলিকে পরিবর্তনের সময় অনুসারে বাছাই করতে বাছাই করতে পারেন (বয়সের ক্রম অনুসারে):

vi **/*.properties(.om[1])

1

আপনি কমান্ডের -quitবিকল্পটি দেখতে চাইতে পারেন find। নিম্নলিখিতটি আপনি কী সম্পাদন করতে চান তার উদাহরণ হতে পারে:

find . -name "*.properties" -print -exec vi {} \; -quit

আমার উল্লেখ করা উচিত, যেহেতু আমি এই উত্তরটি পোস্ট করার খুব দীর্ঘ পরে আবিষ্কার করেছি, কমান্ডের -quitবিএসডি সংস্করণটির জন্য স্যুইচটির অস্তিত্ব নেই find, উদাহরণস্বরূপ, ম্যাকোএসে আপনি কী খুঁজে পেতে পারেন।


1

আমি মনে করি কেউ উত্তরটি দেখিয়েছে:

সন্ধান করুন - নাম * .poperties -exec vi {} \;

এটি "ফাইন্ড-নেম *। প্রপার্টি" দ্বারা সন্ধান করা ফাইলগুলি সম্পাদনার ক্রম হবে।

আপনি যদি কেবল দ্বিতীয় ফাইলটি খুলতে চান:

vi "$ (সন্ধান করুন-নাম *। প্রপার্টি | awk 'এনআর == 2')"


0

find . -name "*.properties" -exec vi {} \;

তারপরে প্রথম ফাইলটি সম্পাদনার পরে বাধা কী (যেমন eg সি) ব্যবহার করুন।


এটি ক্রমানুসারে পাওয়া প্রতিটি ফাইলের জন্য একটি vi খুলবে।
পুনরায় পোস্টার

সত্য, আপনি আপনার উত্তর upvoting করছি।
রেডগ্রিটিব্রিক

0

আপনি findকমান্ডের ফলাফলগুলি কমান্ড লাইনে এর জন্য রাখতে viপারেন:

vi $(find . -name \*.properties -print)

বা এই মত:

vi $(find -name \*.properties)

যেহেতু .এবং -printবাদ দেওয়া থাকলে তা বোঝানো হয়। প্রথম ফলাফলটি খোলার জন্য, ব্যবহার করুন

vi $(find -name \*.properties | head -1)

দ্বিতীয় ফলাফলটি কি কেবল খোলা সম্ভব? আমি হেড -2 চেষ্টা করেছি, তবে এটি প্রথম এবং দ্বিতীয় ফাইল উভয়ই খুলবে
মূর্খ

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