Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-01-26 12:17:16

  harlequin - Użytkownik

harlequin
Użytkownik
Skąd: dolnośląskie
Zarejestrowany: 2006-03-06

hurtowa zmiana znaku w nazwach plików

Mam sporo zdjęć z internetu, jednak w ich nazwach zawsze jest "&" co rodzi problemy. Jak za jednym zamachem zamienić dla wszystkich plików w katalogu zanak "&" na np. "_" w ich nazwach.


[color=darkred][/color][/url]

Offline

 

#2  2007-01-26 12:24:03

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: hurtowa zmiana znaku w nazwach plików

Kod:

find ./ -type f -exec rename 's/&/_/g' {} ;

W katalogu gdzie sa te pliki.

PS. Raczej do programowania się ten temat nadaje. ;)


Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#3  2007-01-26 12:28:00

  harlequin - Użytkownik

harlequin
Użytkownik
Skąd: dolnośląskie
Zarejestrowany: 2006-03-06

Re: hurtowa zmiana znaku w nazwach plików

Myślałem najpierw o jakimś dziale dla początkujących ale jak zobaczyłem magiczną linię zmieniłem zdanie ;).
Dzięki. Zwyczjnie tępo wkleję ją do terminala ;)

[edit]
niestety nie zadziałało.

Kod:

$ ls
b&n035.jpg  b&n063.jpg  b&n114.jpg  b&n158.jpg
b&n003.jpg               b&n036.jpg  b&n064.jpg  b&n115.jpg  b&n159.jpg
b&n007.jpg               b&n038.jpg  

$ find ./ -type f -exec rename 's/&/_/g' {} ;

$ ls
b&n035.jpg  b&n063.jpg  b&n114.jpg  b&n158.jpg
b&n003.jpg               b&n036.jpg  b&n064.jpg  b&n115.jpg  b&n159.jpg
b&n007.jpg               b&n038.jpg  b&n065.jpg  b&n116.jpg  b&n160.jpg

[color=darkred][/color][/url]

Offline

 

#4  2007-01-26 12:36:09

  Lorenzo - Moderator

Lorenzo
Moderator
Zarejestrowany: 2005-12-23

Re: hurtowa zmiana znaku w nazwach plików

prostym skryptem :-)

Kod:

#!/bin/bash

for PLIK in `ls | grep '&'` ; do
    PRZED=`echo $PLIK|cut -d '&' -f1`
    PO=`echo $PLIK|cut -d '&' -f2`
    mv $PLIK $PRZED$PO
done

Tylko dobrze by było żebyś zrobił kopie tych plików lub zmienił mv na cp. Bo nie jestem do końca pewny działania ;-) (przetestowałem na jednym pliku)

//EDIT: Jak to sie dzieje, że mój post ląduje na 4 miejscu, a gdy zacząłem pisac go to w wątku post był jeden ;-)

Offline

 

#5  2007-01-26 12:41:32

  harlequin - Użytkownik

harlequin
Użytkownik
Skąd: dolnośląskie
Zarejestrowany: 2006-03-06

Re: hurtowa zmiana znaku w nazwach plików

przetestowane na raz na 103 plikach. Działa. Dzięki.


[color=darkred][/color][/url]

Offline

 

#6  2007-01-26 12:54:21

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: hurtowa zmiana znaku w nazwach plików

niestety nie zadziałało[/quote]
dziwne, u mnie poszło pięknie

Kod:

~/test$ ls
b&n035.jpg  b&n063.jpg  b&n114.jpg  b&n158.jpg
~/test$ find ./ -type f -exec rename 's/&/_/g' {} ;
~/test$ ls
b_n035.jpg  b_n063.jpg  b_n114.jpg  b_n158.jpg

Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#7  2007-01-26 12:55:19

  Tech - Wielki Brat

Tech
Wielki Brat
Skąd: Hel
Zarejestrowany: 2004-04-22

Re: hurtowa zmiana znaku w nazwach plików

http://www.dug.net.pl/faq/faq-4-54-Jak_zmienic_w_nazwach_plik%F3w_spacje_na_znaki____.php
:)


Ktoś mądry kiedyś powiedział: jak nie masz nic ciekawego do powiedzenia, to się nie odzywaj !!!

Linux Registered User: #344405
GnuPG - C22A 2BA8 BECA 173F 713B A57B DF1A C4B4 E282 AE82

Offline

 

#8  2007-01-26 13:13:15

  Lorenzo - Moderator

Lorenzo
Moderator
Zarejestrowany: 2005-12-23

Re: hurtowa zmiana znaku w nazwach plików

Heh. każdy problem posiada trywialne rozwiązanie ;-)

Offline

 

#9  2007-01-26 14:27:02

  KARQL - Członek DUG

KARQL
Członek DUG
Zarejestrowany: 2006-03-06

Re: hurtowa zmiana znaku w nazwach plików

Moje rozwiazanie:D

Kod:

find -maxdepth 1 -type f -exec bash -c 'mv "{}" $(echo "{}" | tr "&" "_")' ;

Jesli usuniesz lub dasz wiekszy maxdepth to bedzie rekurencyjnie po folderach:D Dlatego do takich operacji wole uzywac finda niz ls:D

Kod:

karql@tartar ~/nazwy $ ls
obr&z10.jpg  obr&z1.jpg  obr&z2.jpg  obr&z3.jpg  obr&z4.jpg  obr&z5.jpg  obr&z6.jpg  obr&z7.jpg  obr&z8.jpg  obr&z9.jpg
karql@tartar ~/nazwy $ find -maxdepth 1 -type f -exec bash -c 'mv "{}" $(echo "{}" | tr "&" "_")' ;
karql@tartar ~/nazwy $ ls
obr_z10.jpg  obr_z1.jpg  obr_z2.jpg  obr_z3.jpg  obr_z4.jpg  obr_z5.jpg  obr_z6.jpg  obr_z7.jpg  obr_z8.jpg  obr_z9.jpg
karql@tartar ~/nazwy $

Tutaj macie jeszcze troche bardziej rozbudowany skrypt w perlu co kiedys moj znajomy pisal.
http://www.uploading.com/files/ZUSX4328/fixname.tar.bz2.html


[img]http://img254.imageshack.us/img254/1225/gentoobar1rs9.png[/img]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00103 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.163.138' WHERE u.id=1
0.00102 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.163.138', 1732266664)
0.00042 SELECT * FROM punbb_online WHERE logged<1732266364
0.00091 SELECT topic_id FROM punbb_posts WHERE id=50860
0.00006 SELECT id FROM punbb_posts WHERE topic_id=6598 ORDER BY posted
0.00076 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=6598 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00177 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=6598 ORDER BY p.id LIMIT 0,25
0.00126 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=6598
Total query time: 0.00742 s