Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak zmienić nazwe plików w linuxie?
Saki
post
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

Ostrzeżenie: (0%)
-----


Jak zmienić nazwy plików w katalogu na 1, 2, 3 itd?
Bo teraz każdy plik ma nazwę: er34ds56a5wrwe54.php i chce zmienić plikom nazwę żeby mieli 1.php, 2.php, 3.php itd.
Ale nie chce tego ręcznie zmieniać bo jest ich 67326 tysięcy:

s15433203:~/pliki# ls | wc -l
67326

Próbowałem już napisać w bashu skrypt, ale nie wychodzi mi..
Sami zobaczcie:

#!/bin/sh
for (( i=1; $i <= 67326; i++ )) ; do
mv *.php $i.php
done

Ale gdy odpalam skrypt to:
mv: target `1.php' is not a directory
mv: target `2.php is not a directory
mv: target `3.php' is not a directory
mv: target `4.php' is not a directory
mv: target `5.php' is not a directory
mv: target `6.php' is not a directory
mv: target `7.php' is not a directory
...

A odpalam w tym katalogu gdzie są pliki php.
Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Bo ten skrypt nie ma prawa działać (IMG:style_emoticons/default/smile.gif) Zobacz co on robi. Od 1 do 67326 przenosi/zmienia nazwę dla pliku o rozszerzeniu php na kolejny przebieg pętli. A powinno być tak, że pobierasz wszystkie pliki o rozszerzeniu php i każdemu po kolei zmieniasz nazwę na zwiększony o 1 licznik.
Przydatne do poznania i użycia: find, mv, for (IMG:style_emoticons/default/smile.gif)

jak widzę nie chciało Ci się nawet do manuala zajrzeć, bo prosta wersja skryptu zmieniającego nazwy jest przy komendzie mv (IMG:style_emoticons/default/smile.gif) Tylko że ona zmienia rozszerzenie pliku, a nie nazwę. Ty musisz skrypt nieco zmodyfikować i powinno hulać (IMG:style_emoticons/default/wink.gif)
Nie wierzysz? Ostatni przykład zobacz: http://ss64.com/bash/mv.html

A za brak czytania manuali jako pokuta na kolanach pielgrzymka do serwerowni najbliższej (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Saki
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

Ostrzeżenie: (0%)
-----


Cytat(thek @ 25.03.2011, 11:15:18 ) *
Bo ten skrypt nie ma prawa działać (IMG:style_emoticons/default/smile.gif) Zobacz co on robi. Od 1 do 67326 przenosi/zmienia nazwę dla pliku o rozszerzeniu php na kolejny przebieg pętli. A powinno być tak, że pobierasz wszystkie pliki o rozszerzeniu php i każdemu po kolei zmieniasz nazwę na zwiększony o 1 licznik.
Przydatne do poznania i użycia: find, mv, for (IMG:style_emoticons/default/smile.gif)

jak widzę nie chciało Ci się nawet do manuala zajrzeć, bo prosta wersja skryptu zmieniającego nazwy jest przy komendzie mv (IMG:style_emoticons/default/smile.gif) Tylko że ona zmienia rozszerzenie pliku, a nie nazwę. Ty musisz skrypt nieco zmodyfikować i powinno hulać (IMG:style_emoticons/default/wink.gif)
Nie wierzysz? Ostatni przykład zobacz: http://ss64.com/bash/mv.html

A za brak czytania manuali jako pokuta na kolanach pielgrzymka do serwerowni najbliższej (IMG:style_emoticons/default/biggrin.gif)


Nie umiem, poddaje się, mógłbyś mi pomóc?
A do najbliższej serwerowni mam 3 metry (IMG:style_emoticons/default/biggrin.gif) Znajduje się w drugim pokoju (IMG:style_emoticons/default/wink.gif)
Pokuta odprawiona (IMG:style_emoticons/default/smile.gif)

Ten post edytował Saki 25.03.2011, 13:42:12
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Saki @ 25.03.2011, 10:24:38 ) *
Próbowałem już napisać w bashu skrypt, ale nie wychodzi mi..

Spróbuj w PHPie napisać.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Kod
#!/bin/bash

k=1

for i in `ls`
do
    if [ $0 != $i ];
    then
        mv $i "$k.php"
        k=$(($k+1))
    fi
done


w bash'u tak można. musisz miec skrypt w tym katalogu gdzie chcesz zmieniać.
Go to the top of the page
+Quote Post
Saki
post
Post #6





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

Ostrzeżenie: (0%)
-----


Cytat(piotrooo89 @ 25.03.2011, 14:34:04 ) *
Kod
#!/bin/bash

k=1

for i in `ls`
do
    if [ $0 != $i ];
    then
        mv $i "$k.php"
        k=$(($k+1))
    fi
done


w bash'u tak można. musisz miec skrypt w tym katalogu gdzie chcesz zmieniać.


Działa (IMG:style_emoticons/default/smile.gif)
Bardzo serdecznie Ci dziękuje (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:14