আমি যখন ব্যবহার করি find
, এটি প্রায়শই একাধিক ফলাফলের সন্ধান করে
find -name pom.xml
./projectA/pom.xml
./projectB/pom.xml
./projectC/pom.xml
আমি প্রায়শই কেবল একটি নির্দিষ্ট ফলাফল নির্বাচন করতে চাই, (যেমন edit ./projectB/pom.xml
)। find
আউটপুট গণনা এবং অন্য অ্যাপ্লিকেশন মধ্যে পাস করার জন্য একটি ফাইল নির্বাচন করার উপায় আছে ? মত:
find <print line nums?> -name pom.xml
1 ./projectA/pom.xml
2 ./projectB/pom.xml
3 ./projectC/pom.xml
!! | <get 2nd entry> | xargs myEditor
?
[সম্পাদনা] উল্লিখিত কয়েকটি সমাধানের সাথে আমি কিছু পেরকুলিয়ার বাগগুলিতে ঝাঁপিয়ে পড়েছি। সুতরাং আমি পুনরুত্পাদন করার পদক্ষেপগুলি ব্যাখ্যা করতে চাই:
git clone http://git.eclipse.org/gitroot/platform/eclipse.platform.swt.git
cd eclipse.platform.swt.git
<now try looking for 'pom.xml' and 'feature.xml' files>
সমাধান [সম্পাদনা] 1 এখনও অবধি 'এনএল' (গণ্য আউটপুট), মাথা এবং লেজগুলির সংমিশ্রণটি কাজ করে মনে হচ্ছে যদি আমি তাদের ফাংশনগুলিতে একত্রিত করি এবং $ (!!) ব্যবহার করি।
অর্থাৎ,
find -name pom.xml | nl #look for files, enumirate output.
#I then define a function called "nls"
nls () {
head -n $1 | tail -n 1
}
# I then type: (suppose I want to select item #2)
<my command> $(!!s 2)
# I press enter, it expands like: (suppose my command is vim)
vim $(find -name pom.xml |nls 2)
# bang, file #2 opens in vim and Bob's your uncle.
সমাধান [সম্পাদনা] 2 "নির্বাচন করুন" ব্যবহার করা বেশ ভালভাবে কাজ করবে বলে মনে হচ্ছে। উদা:
findexec () {
# Usage: findexec <cmd> <name/pattern>
# ex: findexec vim pom.xml
IFS=$'\n';
select file in $(find -type f -name "$2"); do
#$EDITOR "$file"
"$1" "$file"
break
done;
unset IFS
}
Your find command | head -TheNumberYouWant
আপনার প্রয়োজনীয়তা পূরণে? (আপনার লাইনের সাথে!! | head -2 | xargs myEditor
:)