Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: amajcher w 2013-01-24, 21:17:50

Tytuł: Bash kopiowanie plików do jednego katalogu proszę o pomoc
Wiadomość wysłana przez: amajcher w 2013-01-24, 21:17:50
to jest programik który kopiuje pliki z katalogu i jego podkatalogów do jednego folderu nie wiem czemu ale niedziala do konca dobrze może ktoś mi wyjaśnić dlaczego ?
#! /bin/bash
search() {
for i in `ls`
do
   if [ -d $i ]
   then
   cd $i
   search $i $2
   elif [ -f $i ]
   then
   cp $i $2
   fi

done
cd ..
}

search $1 $2
Tytuł: Bash kopiowanie plików do jednego katalogu proszę o pomoc
Wiadomość wysłana przez: grzemach w 2013-01-25, 09:00:47
#! /bin/bash
search() {
for i in `ls $2`
do
   cd $2
   if [ -d $i ]
   then
      search $1 $2'/'$i
   elif [ -f $i ]
   then
       cp $i $1
   fi
done
}

search $1 $2

mam wrażenie że zamieniłem kolejność. W mojej wersji jest parametr 1 gdzie kopiujemy, parametr 2 co kopiujemy.

W twojej wersji brakowało przejścia do katalogu cd $2 przed sprawdzaniem czy jest to plik czy katalog.
Tytuł: Bash kopiowanie plików do jednego katalogu proszę o pomoc
Wiadomość wysłana przez: xavery w 2013-01-25, 11:09:06
Zostaw rekurencję. Zainteresuj się poleceniem find i zrób to w jednej linijce.
Tytuł: Bash kopiowanie plików do jednego katalogu proszę o pomoc
Wiadomość wysłana przez: amajcher w 2013-01-25, 11:35:01
tylko ja muszę zrobić to rekurencyjnie bo to ćwiczenie na zaliczenie a kolega się myli bo nie ma powrotu do wcześniejszego katalogu