मैं एक पीडीएफ ट्री में JPG फाइल खोजने की कोशिश कर रहा हूँ ताकि इसे पीडीएफ में बदलने के लिए कमांड "" निष्पादित किया जा सके।
समस्या यह है कि मैं जिस कोड को चला रहा हूं, वह उसी निर्देशिका में फ़ाइल को छोड़ता है और मैं इसे स्थानांतरित करना चाहता हूं, लेकिन फाइलों के पेड़ की संरचना को संरक्षित करता है।
मैंने अब तक क्या कोशिश की है:
find . -iname '*.jpg' -exec mogrify -format pdf '{}' \;
यह कमांड पूरी तरह से काम करता है। मैं इसकी सामग्री के एक हिस्से को शिफ्ट करना "{}" में हेरफेर करना चाहता हूं;
{} = ./1/aa.xxx
और मैं इसे रूपांतरित करना चाहता हूं:
{} = ./new/1/aa.pdf
@ mpez0 के लिए धन्यवाद, मैं बदलावों का थोड़ा समाधान कर सकता हूं:
find . -iname '*.jpg' | while read file ; do
oldfile=${file##*/};
olddir=${file/"$oldfile"/""};
pdfdir=${file/'./''./PDF'};
pdfdir=${pdfdir/"$oldfile"/""};
savedir=${file/'./''./OLD'};
savedir=${savedir/"$oldfile"/""};
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
mogrify -format pdf "$file";
mkdir -p "$pdfdir";
mkdir -p "$savedir";
mv -- "$olddir$newfile" "$pdfdir$newfile";
mv -- "$olddir$oldfile" "$savedir$oldfile";
done
यह कोड क्या है:
find . -iname '*.jpg'
उन सभी फ़ाइलों को खोजें जो jpg और जेपीईजी के साथ समाप्त होती हैं
while read file ; do
यदि क्रिया को एआई फ़ाइल मिलती है, तो चर में रूट को सहेजें file
oldfile=${file##*/};
फ़ाइल पॅट को बाहर निकालें और चर में फ़ाइल का ते नाम सहेजें oldfile
olddir=${file/"$oldfile"/""};
पैट को बचाने के लिए फ़ाइल का नाम निकालें olddir
pdfdir=${file/'./''./PDF'};
परिवर्तन pdfdir
pdfdir=${pdfdir/"$oldfile"/""};
pdf pat को बचाने के लिए फ़ाइल का नाम निकालें pdfdir
savedir=${file/'./''./OLD'};
परिवर्तन savedir
savedir=${savedir/"$oldfile"/""};
pdf pat को बचाने के लिए फ़ाइल का नाम निकालें savedir
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
उस नई फ़ाइल का नाम सहेजें जिसे बनाया जाएगा newfile
mogrify -format pdf "$file";
परिवर्तित करें file
पीडीएफ के लिए
mkdir -p "$pdfdir";
पैट की निर्देशिका बनाएँ pdfdir
mkdir -p "$savedir";
पैट की निर्देशिका बनाएँ savedir
mv -- "$olddir$newfile" "$pdfdir$newfile";
नई पीडीएफ फाइल को पीडीएफ डायरेक्टर के पास ले जाएं mv -- "$olddir$oldfile" "$savedir$oldfile";
पुरानी jpg फ़ाइल को पुरानी निर्देशिका में ले जाएँ done
प्रक्रिया को समाप्त करें
मुझे उम्मीद है कि इससे दूसरों को मदद मिलेगी