В солярисе я хотел бы скопировать все файлы, найденные командой find, по несколько другому пути. Следующий скрипт в основном выполняет cp для каждого найденного файла find. Например:
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;
Кажется, это немного, и мне интересно, как использовать sed in-line с командами find и cp для достижения того же самого. Я бы надеялся на что-то вроде следующего, но, видимо, скобки не являются приемлемым методом изменения порядка операций:
find . -name *_compressed -exec cp {} (echo '{}' | sed 's/english/spanish/')