Как я могу массово конвертировать изображения, сохраненные как текст / ASCII в SVN, в двоичный файл?
Каким-то образом изображения были сохранены как text/ascii, и мне нужно рекурсивно сделать это для сотен каталогов изображений, все под одним корнем images
каталог.
Я получил несколько инструкций, которые говорят мне:
svn proplist <yourfile>
svn propdel svn:eol-style <yourfile>
svn propset svn:mime-type application/octet-stream <yourfile>
Есть ли какой-нибудь родной svn рекурсивный способ, которым я могу это сделать? Если нет, может кто-нибудь посоветовать, как я могу рекурсивно применить это с помощью bash-скрипта?
3 ответа
На оболочке:
find -name '*.png' -exec \
sh -c "svn propdel svn:eol-style {} && svn propset svn:mime-type image/png {}" \;
Следующий код powershell достигнет того, что вы хотите сделать:
foreach( $file in get-childitem -name -include *.png -exclude .svn -recurse) {
& svn propdel svn:eol-style $file;
& svn propset svn:mime-type image/png $file
};
У меня нет репозитория Subversion, где я могу проверить это, но это не должно быть слишком сложно:
find . -name .svn -prune -o print
Это перечислит все файлы в вашем рабочем каталоге (без каталогов.svn).
Теперь вы можете комбинировать это с циклом чтения
find . -name .svn -prune -o print | while read file
do
svn propdel svn:eol-style $file
svn propset svn:mime-type application/octet-stream $file
done
Теперь вы заметили, что я не проверяю, установлено ли для файлов это свойство или нет. Мне просто все равно. И это будет делать каждый файл. Если вы хотите сделать только определенный тип файла, вам придется изменить find
команда:
find . -name .svn -prune -o -name "*.jpg" print
Я настоятельно рекомендую вам начать с чистого рабочего каталога Subversion и запустить такой тест:
find . -name .svn -prune -o print | while read file
do
echo svn propdel svn:eol-style $file
echo svn propset svn:mime-type application/octet-stream $file
done
Если результат этого выглядит хорошо, то удалите echo
и давай рву.