वाइल्डकार्ड का उपयोग करें, लेकिन इसे शेल से बचाने के लिए सावधान रहें:
rpm2cpio rpm_name | cpio -ivd './a/b/c/*'
सीधे नहीं, लेकिन cpio
एक -r/--rename
स्विच है। दुर्भाग्य से इसके साथ दो समस्याएं हैं: यह प्रत्येक फ़ाइल के बारे में पूछता है और यह /dev/tty
सीधे इनपुट लेता है । जिसका अर्थ है कि इसे स्वचालित करना आसान नहीं है। expect
यदि आप वास्तव में करना चाहते हैं तो आप कार्यक्रम का उपयोग कर सकते हैं । चेतावनी : दिल के बेहोश होने के लिए नहीं;) ध्यान दें कि यह ठीक से उद्धरण (या संभवतः रिक्त स्थान) के साथ फ़ाइलों को संभाल नहीं करता है। यह rpm फ़ाइल का नाम, फ़ाइलों को निकालने के लिए एक पैटर्न और sed
प्रत्येक फ़ाइल को बदलने के लिए एक कमांड की अपेक्षा करता है । उपयोग उदाहरण:
cpio.sh rpm_name './a/b/c/*' 's#^./a/b/#foo/#'
सैद्धांतिक रूप से स्क्रिप्ट को पाइप किया जा सकता है expect
लेकिन यह पाठक के लिए एक एक्सर्साइज़ के रूप में छोड़ दिया जाता है।
#! /bin/bash
SCRIPT=/tmp/$$.expect
RPM="$1"
FILES="$2"
TRANSFORM="$3"
echo "spawn sh -c \"rpm2cpio \\\"$RPM\\\" | cpio -ird '$FILES'\"" > "$SCRIPT"
rpm2cpio "$RPM" | cpio -it "$FILES" 2>/dev/null | sed "$TRANSFORM" | while read line
do
echo "send \"$line\\r\"" >> "$SCRIPT"
done
echo "wait" >> "$SCRIPT"
expect "$SCRIPT"
rm -f "$SCRIPT"