Masowe zmienianie nazwy w bash-u


(Janek Max) #1

Witam. Mam mały problem ze skryptem w bashu który mi nie działa. Wygląda on tak

#!/bin/bash

while true

do

find /home/konto/p/zdjecia/ -type f -name '*.jpg' | while read

linia; do

cp -f $linia /home/konto/p/nazwa.jpg;

done


sleep 1

done

Tan kod nie dziala. Ma polegać to na tym, że w każdym folderze (tutaj dałem domyślnie dopisany zdjęcia, ale będzie to zastąpione zmienną) jest tylko jeden plik .jpg którego nie znam nazwy. Ma mi go przekopiować do określonego katalogu jakim w tym przypadku jest "p". Mógłby ktoś sprawdzić co jest nie tak z tym kodem ?


(Max) #2

ehlo.a.

a dlaczego nie skorzystać z opcji "exec" polecenia find ?

find /home/konto/p/zdjecia/ -type f -name '*.jpg' -exec cp -f {} /home/konto/p/ \;

to polecenie znajdzie w katalogu /home/konto/p/zdjecia/ wszystki pliki *.jpeg i skopiuje je do katalogu /home/konto/p. Wazne ze jesli beda dwa pliki o takiej samej nazwie to ten wczesniej znaleziony będzie nadpisany ...

pzod.r


(Janek Max) #3

Jeszcze nie dopisałem ważnej rzeczy ma mi przypisywać określoną nazwę pliku, która będzie brana ze zmiennej.

To oczywiście jest tylko przykład ale ma to działać na takiej zasadzie.

Mówiąc prościej plik jpg ma mieć taką same nazwę jak folder w którym się znajduję, a potem przekopiować ten plik jpg do katalogu wyżej (czyli tak jak jest w moim przykładzie)

///edit

Utworzyłem już sobie skrypt tylko gdy w nazwę zapisanego pliku wpisuje zmienna to wychodzi mi coś takiego "sdfsfasf ?.nfo" Chodzi o ten znak zapytania dodaje mi go jak wprowadzę zmienna. Kiedy edytuje go w nano przy zapisie zamiast ? mam ^M

Jest jakiś sposób żeby to usunąć ?