জার্গস স্ট্রিং ইন্টারপোলেশন, কোনও স্থান সন্নিবেশ করে নয়


5

আমি পুনরাবৃত্তি করতে চাই

touch ../template/filename

কোথা filenameথেকে আসে find। আমি অপারেশনটি xargsপ্রয়োগ করতে চাই touch, তবে আমি এটি চাই না যে এটি কোনও স্থান সন্নিবেশ করুক যা এটি সাধারণত করে যা থেকে আসে:

touch ../template/ filename

এই আমার অসম্পূর্ণ আদেশ। আমি কীভাবে এটি সম্পূর্ণ করব?

find *.html | xargs touch ../template/WHAT-NOW

উত্তর:


9
find -name "*.html" | xargs -d"\n" -I"{}" touch ../template/{}

find -name "*.html" -exec touch ../template/{} \;

নোটটি find *.htmlভুল যেহেতু কমান্ড কার্যকর করার আগে ওয়াইল্ডকার্ডগুলি প্রসারিত করা হয় ।


ফাইন্ড কমান্ড আমাকে দেয় ./photos_each.htmlযখন আমি আসলে বোঝাতে চাইতাম photos_each.html। আমি কেবল ফাইলের
নামটি

1
@ আইচনইয়ু: তারা এখানে সমান। উভয় ../template/photos_each.htmlএবং ../template/./photos_each.htmlকাজ করা উচিত।
মাধ্যাকর্ষণ

4

শেল লুপ হিসাবে এটি লেখা সহজ। উদাহরণস্বরূপ, সি শেল আপনি হয়ত লিখতে পারেন:

foreach i (`find -name "*.html"`)
   touch ../template/$i
end

এবং এটি এখানে বাশ:

for i in `find -name "*.html"`
do
   touch ../template/$i
done

এবং আমার হ্যামিল্টন সি শেলটিতে (সম্পূর্ণ প্রকাশ: আমি লেখক), আমি বৃক্ষের পথে "..." ওয়াইল্ডকার্ড যুক্ত করেছি , যাতে আপনি লিখতে পারেন:

foreach i (.../*.html)
   touch ../template/$i
end

0

পরিবর্তে জিএনইউ সমান্তরাল ব্যবহার বিবেচনা করুন। এইভাবে আপনি দুষ্টু চমক এড়ান যদি ফাইলের নামগুলিতে স্থান থাকে 'বা ":

find *.html | parallel -X touch ../template/{/}

আরও জানতে ইন্ট্রো ভিডিওগুলি দেখুন: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

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