यह शीर्षक थोड़ा उलझन में है, इसलिए मुझे इसे तोड़ने दो। मूल रूप से मैं विभिन्न नामों और एक्सटेंशन के साथ फ़ाइलों की एक पूरी सूची है:विस्तार से पहले अतिरिक्त प्रत्यय वाली फ़ाइल की एक प्रति बनाने के लिए मैं बैश का उपयोग कैसे करूं?
MainDirectory/
image_1.png
foobar.jpeg
myFile.txt
एक iPad ऐप्लिकेशन के लिए, मैं प्रत्यय @ 2X इन फ़ाइल नाम के सभी के अंत में जोड़ा के साथ इन की प्रतियां बनाने की जरूरत , एक्सटेंशन से पहले - तो मैं इस के साथ खत्म होगा:
MainDirectory/
image_1.png
[email protected]
foobar.jpeg
[email protected]
myFile.txt
[email protected]
इसके बजाय हाथ से एक समय में फ़ाइल नाम एक बदलने की, मैं मेरे लिए यह की देखभाल करने के लिए एक स्क्रिप्ट बनाने के लिए चाहते हैं। मैं वर्तमान में निम्नलिखित है, लेकिन यह अपेक्षा के अनुरूप काम नहीं करता है:
#!/bin/bash
FILE_DIR=.
#if there is an argument, use that as the files directory. Otherwise, use .
if [ $# -eq 1 ]
then
$FILE_DIR=$1
fi
for f in $FILE_DIR/*
do
echo "Processing $f"
filename=$(basename "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
newFileName=$(echo -n $filename; echo -n [email protected]; echo -n $extension)
echo Creating $newFileName
cp $f newFileName
done
exit 0
मैं भी शुद्ध बैश को यह रखने के लिए, और os-विशिष्ट कॉल पर भरोसा नहीं करना चाहता हूँ। मैं क्या गलत कर रहा हूं? मुझे क्या चाहिए जो करने के लिए मैं क्या बदल सकता हूं या कौन सा कोड काम करेगा?
एक आकर्षण की तरह काम किया! धन्यवाद – Phil
#, ##,%, और %% के बारे में नहीं पता था - बहुत उपयोगी, धन्यवाद! यहां http://tldp.org/LDP/abs/html/string-manipulation.html – ahmedre