सोलारिस में, मैं फाइंड कमांड द्वारा मिली सभी फाइलों को थोड़े अलग रास्ते पर कॉपी करना चाहूंगा। निम्न स्क्रिप्ट मूल रूप से प्रत्येक फ़ाइल के लिए cp निष्पादित करती है जिसे ढूंढा गया है। उदाहरण के लिए:
cp ./content/english/activity1_compressed.swf ./content/spanish/activity1_compressed.swf
cp ./content/english/activity2_compressed.swf ./content/spanish/activity2_compressed.swf
...
#!/bin/bash
# Read all file names into an array
FilesArray=($(find "." -name "*_compressed.swf"))
# Get length of an array
FilesIndex=${#FilesArray[@]}
# Copy each file from english to spanish folder
# Ex: cp ./english/activity_compressed.swf ./spanish/activity_compressed.swf
for (( i=0; i<${FilesIndex}; i++ ));
do
source="${FilesArray[$i]}"
# Replace "english" with "spanish" in path
destination="$(echo "${source}" | sed 's/english/spanish/')"
cp "${source}" "${destination}"
done
exit 0;
यह थोड़ा बहुत लगता है और मुझे आश्चर्य है कि एक ही चीज़ को प्राप्त करने के लिए खोज और सीपी कमांड के साथ इन-लाइन का उपयोग कैसे करें। मैं निम्नलिखित की तरह कुछ के लिए उम्मीद है, लेकिन जाहिरा तौर पर कोष्ठक आपरेशन के बदलते क्रम की स्वीकार्य विधि नहीं कर रहे हैं:
find . -name *_compressed -exec cp {} (echo '{}' | sed 's/english/spanish/')
$()
बैकटिक्स के बजाय।