স্পেস সহ ফাইলের নামের জন্য মেকফাইল ওয়াইল্ডকার্ড কমান্ড ব্যবহার করা হচ্ছে


8

আমার কাছে একটি মেকফাইল রয়েছে যা আমি ছবিগুলি সংকুচিত করতে ব্যবহার করি:

src=$(wildcard Photos/*.jpg) $(wildcard Photos/*.JPG)
out=$(subst Photos,Compressed,$(src))

all : $(out)

clean:
    @rmdir -r Compressed

Compressed:
    @mkdir Compressed

Compressed/%.jpg: Photos/%.jpg Compressed
    @echo "Compressing $<"
    @convert "$<" -scale 20% "$@"

Compressed/%.JPG: Photos/%.JPG Compressed
    @echo "Compressing $<"
    @convert "$<" -scale 20% "$@"

তবে উদাহরণস্বরূপ, যখন আমার কাছে একটি স্থান সহ একটি ছবি রয়েছে Piper PA-28-236 Dakota.JPG, আমি এই ত্রুটিটি পেয়েছি:

make: *** No rule to make target `Compressed/Piper', needed by `all'.  Stop.

আমি মনে করি এটি wildcardকমান্ডের মধ্যে একটি সমস্যা , তবে এটি কাজ করতে কী পরিবর্তন করতে হবে তা আমি নিশ্চিত নই।

ফাইলের নাম ফাঁকা করার জন্য আমি কীভাবে আমার মেকফিলটি সংশোধন করব?


আমি এখানে স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি জিজ্ঞাসা করেছি ।
আইবেলিভ

উত্তর:


4

আমি স্ট্যাক ওভারফ্লোতে জিজ্ঞাসা করেছি এবং পেরিয়াল নামের একজন ব্যবহারকারী আমাকে এটি সমাধান করতে সহায়তা করেছেন, তার উত্তর এখানে

এটি কাজ করার জন্য আমি যা করেছি তা এখানে:

  1. ব্যবহার করুন src=$(shell ls Photos | sed 's/ /?/g;s/.*/Photos\/\0/')মধ্যে শূণ্যস্থান সমস্যাটি সমাধানের জন্য wildcardকমান্ড এবং স্পেস এর সাথে কাজ করা লক্ষ্যমাত্রা পেতে।

  2. এই পাতার ফলে ফাইলের মধ্যে একটি প্রশ্ন চিহ্ন, তাই প্রতিস্থাপন করতে একটি কল ফাংশন ব্যবহার ?চূড়ান্ত ফাইলে একটি স্পেস দিয়ে: replace = echo $(1) | sed 's/?/ /g'@convert "$<" -scale 20% "``$(call replace,$@)``"এটির সাথে কল করুন (আমি কেবল একটি ব্যাকটিক ব্যবহার করেছি, তবে কীভাবে এটি সঠিকভাবে প্রদর্শন করা যায় তা আমি জানি না)।

সুতরাং, এখানে আমার চূড়ান্ত মেকফিল:

src=$(shell ls Photos | sed 's/ /?/g;s/.*/Photos\/\0/')
out=$(subst Photos,Compressed,$(src))

replace = echo $(1) | sed 's/?/ /g'

all : $(out)

clean:
    @rmdir -r Compressed

Compressed:
    @mkdir Compressed

Compressed/%.jpg: Photos/%.jpg Compressed
    @echo "Compressing $<"
    @convert "$<" -scale 20% "`$(call replace,$@)`"

Compressed/%.JPG: Photos/%.JPG Compressed
    @echo "Compressing $<"
    @convert "$<" -scale 20% "`$(call replace,$@)`"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.