Witajcie.
Mam taki o to problem.
Mam plik s-12_FV22222_06112012.txt, chciałbym aby ten plik został wysłany na serwer ftp, ale aby ten konkretny plik został wysłany do katalogu s-12 (taki jak w nazwie).
Plik musiałby być wysłany do s-12 i dodatkowo jeszcze przed wysłaniem zamieniony na plik bez s12_ czyli na plik FV22222_06112012.txt.
Czy ktoś może miał podobny problem, może ktoś ma jakiś pomysł? Ja niestety nie jestem w stanie lftp tego wykonać. Może to nie odpowiedni program, ale zakładam, że raczej chodzi o jakiś logiczny skrypt.
Pliki mogą się różnić może być s-13_FV22222_06112012.txt, s-14_FV22222_06112012.txt itd. każdy jednak w zmienionej postaci musi trafić do katalogu s-13 lub s-14 itd.
Pozdrawiam.
Wysy
Cześć. Na wstępie kilka pytań:
1. Czy długość nazwy pliku jest niezmienna
2. Czy katalogi na serwerze ftp istnieją (s-12, s-13, s-XX, ...), czy przed kopiowaniem plików należy je tworzyć?
Pomysł mam taki:
Skryptem bash wykonujesz: zmiana nazwy pliku, otwarcie połączenia FTP, wejście do katalogu, wrzucenie pliku, zamknięcie połączenia. To wszystko w pętli.
1. Czy długość nazwy pliku jest niezmienna
2. Czy katalogi na serwerze ftp istnieją (s-12, s-13, s-XX, ...), czy przed kopiowaniem plików należy je tworzyć?
Pomysł mam taki:
Skryptem bash wykonujesz: zmiana nazwy pliku, otwarcie połączenia FTP, wejście do katalogu, wrzucenie pliku, zamknięcie połączenia. To wszystko w pętli.
Edycja:
Widzę że trochę bzdur popisałem, więc poprawiam ;-)
Część zmieniająca nazwy plików działa już prawidłowo.
Będę pisał bez sprawdzania, ale może z tego da się coś ułożyć.
Oczywiście przetestuj na jakimś pliku o podobnej nazwie.
Zmiana nazwy pliku:
Połączenie ftp:
Oczywiście część FTP możesz również zawrzeć w skrypcie. Jeśli plików masz mało, możesz otwierać połączenie ftp, wrzucać plik i zamykać dla każdego pliku. Jeśli masz ich dużo, to raczej jest to mało efektywne rozwiązanie. Wtedy możesz skrypt podzielić na 2 części, w jednej zmieniać hurtowo nazwy, w drugiej kopiować do odpowiednich katalogów.
To tylko taki niedopracowany pomysł, ale może naprowadzi Cię na rozwiązanie problemu.
Widzę że trochę bzdur popisałem, więc poprawiam ;-)
Część zmieniająca nazwy plików działa już prawidłowo.
Będę pisał bez sprawdzania, ale może z tego da się coś ułożyć.
Oczywiście przetestuj na jakimś pliku o podobnej nazwie.
Zmiana nazwy pliku:
Kod: Zaznacz cały
for filename in s-*.txt
do
#echo $filename;
F_part=`echo $filename|cut -d "_" -f2,3`;
#echo $F_part;
mv $filename $F_part;
done
Kod: Zaznacz cały
ftp [I]hostname[/I]
cd katalog
mput *.txt
close
To tylko taki niedopracowany pomysł, ale może naprowadzi Cię na rozwiązanie problemu.
Witaj, dziękuję za poświęcony czas.
Wszystko jest w skrypcie jasne, ale jest jeden podstawowy problem. Te wszystkie operacje nie prowadzą do wysłania pliku po obcięciu członu przed _ do odpowiedniego katalogu na ftp.
To jest prawdziwy problem, jak posegregować te pliki po nazwach do katalogów i jak obciąć ich wyróżnik i je tam wysłać...
Wszystko jest w skrypcie jasne, ale jest jeden podstawowy problem. Te wszystkie operacje nie prowadzą do wysłania pliku po obcięciu członu przed _ do odpowiedniego katalogu na ftp.
To jest prawdziwy problem, jak posegregować te pliki po nazwach do katalogów i jak obciąć ich wyróżnik i je tam wysłać...
Szczerze mówiąc to już w moich dwóch postach masz w sumie pomysł jak to zrobić. Ale wiem również, że często mało kto łapie moje skróty myślowe, więc może nie być to takie oczywiste ;->
Poza tym, należałoby mówić szczerze że potrzebujesz napisania takiego skryptu, a nie pomocy w jego napisaniu :P
Kod: Zaznacz cały
for filename in s-*.txt
do
#echo $filename;
F_part=`echo $filename|cut -d "_" -f2,3`;
S_part=`echo $filename|cut -d "_" -f1`;
#echo $F_part;
mv $filename $F_part;
ftp hostname
cd $S_part
mput $F_part
close
done