Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как переименовать Цель ссылки с .svg на .png?  (Прочитано 634 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Как переименовать Цель ссылки с .svg на .png? Возможно ли это вообще?
Или может проще вывести Цель ссылки и Имя ссылки в лист и потом переименовать их? Тогда вопрос - как это можно сделать массово, рекурсивно сразу по тысячам ссылок?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6907
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #1 : 21 Февраля 2019, 13:24:59 »
Цитировать
переименовать Цель ссылки с .svg на .png? Возможно ли это вообще?
Возможно. Но не факт, что после этого картинки будут правильно открываться. Например, с иконками для темы иконок такой трюк срабатывает.
Цитировать
как это можно сделать массово, рекурсивно сразу по тысячам ссылок?
В общем случае - написать скрипт. При должном умении можно обойтись и командной строкой.

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1269
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #2 : 21 Февраля 2019, 13:28:19 »
Как переименовать Цель ссылки с .svg на .png?
А смысл? Это разные форматы. svg - векторный, а png - растровый. Ничего не отобразится. Нужно форматы преобразовывать, а не переименовывать.

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #3 : 21 Февраля 2019, 15:04:10 »
Сделан экспорт из .svg в .png. Очень не хочу переписывать тысячи ссылок вручную. Предъявите скрипт если это вообще возможно.

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1269
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #4 : 21 Февраля 2019, 23:43:48 »
ALiEN175, если я правильно понял, нужно не файлы переименовать а таржеты ссылок. А лучше удалить ссылки и назначить новые.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #5 : 21 Февраля 2019, 23:55:21 »
Хм. Как-то так.
Код: (bash) [Выделить]
#!/usr/bin/env bash

while read F; do
    RN=$(readlink $F)
    NN=${RN/.svg/.png}
    ln -sf $NN $F
done < <(find -type l)
« Последнее редактирование: 22 Февраля 2019, 00:20:18 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #6 : 25 Февраля 2019, 13:56:55 »
ALiEN175 спасибо большое! Собственно ссылки (после скрипта) переименовал в Thunar.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как переименовать Цель ссылки с .svg на .png?
« Ответ #7 : 26 Февраля 2019, 00:15:03 »
#define MV ".svg",".png"
#define CD "."
#define VIEW 1
// rslnk.c
// ~$ gcc rslnk.c -o rslnk
// ~$ ./rslnk
// victor00000 (c) 2019
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>

char *mv[] = { MV, 0 };

char **fdir = 0;

//=====================
char *strdup2(const char *cd, const char *fn)
{
char *c;

asprintf(&c, "%s/%s", cd, fn);
return c;
}

//=================
void find(const char *cd)
{
DIR *d;
struct dirent *e;

d = opendir(cd);
if (d == 0) {
perror(cd);
errno = 0;
return;
}
int i;

while ((e = readdir(d))) {
if (strcmp(e->d_name, ".") == 0 || strcmp(e->d_name, "..") == 0)
continue;
if (e->d_type == 10) {
i = 0;
if (fdir == 0)
fdir = malloc(sizeof(char *) * 2);
else {
while (fdir[i])
i++;
fdir = realloc(fdir, sizeof(char *) * (i + 2));
}
fdir[i + 1] = 0;
fdir[i] = strdup2(cd, e->d_name);
//=================0
}
if (e->d_type == 4) {
char *cd2;

cd2 = strdup2(cd, e->d_name);
find(cd2);
free(cd2);
}
// printf ("%d %s\n",e->d_type,e->d_name);
}
closedir(d);
}

//================m0
int main()
{
find(CD);
char **temp, *rk = malloc(1024);

temp = fdir;
while (*fdir) {
// printf ("= %s =\n",*fdir);
bzero(rk, 1024);
readlink(*fdir, rk, 1024);
if (strcmp(rk + strlen(rk) - strlen(mv[0]), mv[0]) == 0) {
printf("+ %s -> ", rk);
sprintf(rk + strlen(rk) - strlen(mv[0]), "%s", mv[1]);
remove(*fdir);
}
symlink(rk, *fdir);
if (VIEW == 1)
printf("%s -> %s\n", rk, *fdir);
fdir++;
}
if (temp != 0) {
fdir = temp;
while (*fdir) {
free(*fdir);
fdir++;
}
free(temp);
}
free(rk);
return 0;
}

a@a:~/c/t1$
a@a:~/c/t1$ ln -sf 12345.svg 1/lk
a@a:~/c/t1$
a@a:~/c/t1$ ./rslnk
1 -> ./1.l
2 -> ./1/2/lk
+ 12345.svg -> 12345.png -> ./1/lk
a@a:~/c/t1$
« Последнее редактирование: 26 Февраля 2019, 00:53:46 от victor00000 »
Wars ~.o

 

Страница сгенерирована за 0.027 секунд. Запросов: 23.