Jag vet inte riktigt någon bra metod för att lösa problemet; det är klurigare än det verkar. Filerna måste kopieras rekursivt (eller åtminstone måste filnamnen hämtas), analyseras för att till sist skickas vidare till rätt destination (målkatalog). Problemet uppkommer då filnamnen som används är av relativt generell karaktär, t ex genom att mellanslag i filnamnen förekommer.
Används t ex "find" (find ./ minKatalog -type f) fås en vacker lista på filerna, men jag vet inte riktigt hur jag ska gå till väga sedan. Jag kan naturligtvis lägga resultatet i en fil, fast i så fall måste jag kunna läsa en rad i taget från filen. Men ska det verkligen vara nödvändigt att behöva lägga resultatet i en fil?
Jag har prövat att lägga resultatet i både en vanlig variabel och i en "array" fast det funkar inte riktigt; då jag hämtar resultatet så delar sig filnamnen vid mellanslagen, vilket naturligtvis inte är så käckt! Oxo om jag satt citationstecken runt om varje filnamn! Varför?
Ex.
Kod: Markera allt
$########################################## Lista filerna med "ls" (två filer i varje katalog)
$ ls -R ./katalog_A/
./katalog_A/:
fil_A1 katalog_B min fil_A1
./katalog_A/katalog_B:
fil_B min fil_B
$########################################## Ta bort tidigare innehåll ur "arrayen" a
$ a=( "" )
$ echo ${a[@]}
$ echo ${#a[@]}
1
$########################################## Lista filerna med "find" (fyra st - vilket det ska vara!)
$ find ./katalog_A/ -type f
./katalog_A/fil_A1
./katalog_A/katalog_B/fil_B
./katalog_A/katalog_B/min fil_B
./katalog_A/min fil_A1
$########################################## Lägg filnamnen i "arrayen" a ( Nu sex filer pga mellanslagen!)
$ a=(`find ./katalog_A/ -type f -exec echo '"{}"' \; `)
$ echo ${#a[@]}
6
$ echo ${a[@]}
"./katalog_A/fil_A1" "./katalog_A/katalog_B/fil_B" "./katalog_A/katalog_B/min fil_B" "./katalog_A/min fil_A1"
$########################################## Lista elementen i "arrayen" a för att tydliggöra det hela
$ echo -e "${a[0]} \n ${a[1]} \n ${a[2]} \n ${a[3]} \n ${a[4]} \n ${a[5]}"
"./katalog_A/fil_A1"
"./katalog_A/katalog_B/fil_B"
"./katalog_A/katalog_B/min
fil_B"
"./katalog_A/min
fil_A1"
$########################################## Lägg märke till att citationstecknen delar upp sig på var sin sida av de "falska" filnamnen ovan
Är det någon som har någon idé hur jag ska gå vidare? Om jag t ex måste spara filnamnen i en fil, hur hämtar jag dem smidigast då (rad för rad); finns det något bättre sätt?
/Mvh Per