[+] Skrypt - wczytanie plików do p

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

[+] Skrypt - wczytanie plików do pętli w kolejności

Post autor: DaVidoSS »

Skrypt:

Kod: Zaznacz cały


#!/bin/bash

x=0

        until [[ $x = 100 ]]; do

                x=$((x + 1))

                        if [[ $x -le 9 ]]; then
                                touch 0"$x".\ omg\ .mp3
                                echo "$x jest jednym znakiem"
                        else

                                touch "$x".\ omg\ .mp3
                                echo "$x jest wyrazeniem wieloznakowym"

                        fi

        done


        for FILE  in *.mp3 ; do

                echo $FILE

        done

exit 0

Kod: Zaznacz cały

davidoss-sid@debian-sid:~/TESTY$ bash omg

Kod: Zaznacz cały

1 jest jednym znakiem
2 jest jednym znakiem
3 jest jednym znakiem
4 jest jednym znakiem
5 jest jednym znakiem
6 jest jednym znakiem
7 jest jednym znakiem
8 jest jednym znakiem
9 jest jednym znakiem
10 jest wyrazeniem wieloznakowym
11 jest wyrazeniem wieloznakowym
12 jest wyrazeniem wieloznakowym
13 jest wyrazeniem wieloznakowym
14 jest wyrazeniem wieloznakowym
15 jest wyrazeniem wieloznakowym
16 jest wyrazeniem wieloznakowym
17 jest wyrazeniem wieloznakowym
18 jest wyrazeniem wieloznakowym
19 jest wyrazeniem wieloznakowym
20 jest wyrazeniem wieloznakowym
21 jest wyrazeniem wieloznakowym
22 jest wyrazeniem wieloznakowym
23 jest wyrazeniem wieloznakowym
24 jest wyrazeniem wieloznakowym
25 jest wyrazeniem wieloznakowym
26 jest wyrazeniem wieloznakowym
27 jest wyrazeniem wieloznakowym
28 jest wyrazeniem wieloznakowym
29 jest wyrazeniem wieloznakowym
30 jest wyrazeniem wieloznakowym
31 jest wyrazeniem wieloznakowym
32 jest wyrazeniem wieloznakowym
33 jest wyrazeniem wieloznakowym
34 jest wyrazeniem wieloznakowym
35 jest wyrazeniem wieloznakowym
36 jest wyrazeniem wieloznakowym
37 jest wyrazeniem wieloznakowym
38 jest wyrazeniem wieloznakowym
39 jest wyrazeniem wieloznakowym
40 jest wyrazeniem wieloznakowym
41 jest wyrazeniem wieloznakowym
42 jest wyrazeniem wieloznakowym
43 jest wyrazeniem wieloznakowym
44 jest wyrazeniem wieloznakowym
45 jest wyrazeniem wieloznakowym
46 jest wyrazeniem wieloznakowym
47 jest wyrazeniem wieloznakowym
48 jest wyrazeniem wieloznakowym
49 jest wyrazeniem wieloznakowym
50 jest wyrazeniem wieloznakowym
51 jest wyrazeniem wieloznakowym
52 jest wyrazeniem wieloznakowym
53 jest wyrazeniem wieloznakowym
54 jest wyrazeniem wieloznakowym
55 jest wyrazeniem wieloznakowym
56 jest wyrazeniem wieloznakowym
57 jest wyrazeniem wieloznakowym
58 jest wyrazeniem wieloznakowym
59 jest wyrazeniem wieloznakowym
60 jest wyrazeniem wieloznakowym
61 jest wyrazeniem wieloznakowym
62 jest wyrazeniem wieloznakowym
63 jest wyrazeniem wieloznakowym
64 jest wyrazeniem wieloznakowym
65 jest wyrazeniem wieloznakowym
66 jest wyrazeniem wieloznakowym
67 jest wyrazeniem wieloznakowym
68 jest wyrazeniem wieloznakowym
69 jest wyrazeniem wieloznakowym
70 jest wyrazeniem wieloznakowym
71 jest wyrazeniem wieloznakowym
72 jest wyrazeniem wieloznakowym
73 jest wyrazeniem wieloznakowym
74 jest wyrazeniem wieloznakowym
75 jest wyrazeniem wieloznakowym
76 jest wyrazeniem wieloznakowym
77 jest wyrazeniem wieloznakowym
78 jest wyrazeniem wieloznakowym
79 jest wyrazeniem wieloznakowym
80 jest wyrazeniem wieloznakowym
81 jest wyrazeniem wieloznakowym
82 jest wyrazeniem wieloznakowym
83 jest wyrazeniem wieloznakowym
84 jest wyrazeniem wieloznakowym
85 jest wyrazeniem wieloznakowym
86 jest wyrazeniem wieloznakowym
87 jest wyrazeniem wieloznakowym
88 jest wyrazeniem wieloznakowym
89 jest wyrazeniem wieloznakowym
90 jest wyrazeniem wieloznakowym
91 jest wyrazeniem wieloznakowym
92 jest wyrazeniem wieloznakowym
93 jest wyrazeniem wieloznakowym
94 jest wyrazeniem wieloznakowym
95 jest wyrazeniem wieloznakowym
96 jest wyrazeniem wieloznakowym
97 jest wyrazeniem wieloznakowym
98 jest wyrazeniem wieloznakowym
99 jest wyrazeniem wieloznakowym
100 jest wyrazeniem wieloznakowym

01. omg .mp3
02. omg .mp3
03. omg .mp3
04. omg .mp3
05. omg .mp3
06. omg .mp3
07. omg .mp3
08. omg .mp3
09. omg .mp3
[B]100. omg .mp3[/B]
10. omg .mp3
11. omg .mp3
12. omg .mp3
13. omg .mp3
14. omg .mp3
15. omg .mp3
16. omg .mp3
17. omg .mp3
18. omg .mp3
19. omg .mp3
20. omg .mp3
21. omg .mp3
22. omg .mp3
23. omg .mp3
24. omg .mp3
25. omg .mp3
26. omg .mp3
27. omg .mp3
28. omg .mp3
29. omg .mp3
30. omg .mp3
31. omg .mp3
32. omg .mp3
33. omg .mp3
34. omg .mp3
35. omg .mp3
36. omg .mp3
37. omg .mp3
38. omg .mp3
39. omg .mp3
40. omg .mp3
41. omg .mp3
42. omg .mp3
43. omg .mp3
44. omg .mp3
45. omg .mp3
46. omg .mp3
47. omg .mp3
48. omg .mp3
49. omg .mp3
50. omg .mp3
51. omg .mp3
52. omg .mp3
53. omg .mp3
54. omg .mp3
55. omg .mp3
56. omg .mp3
57. omg .mp3
58. omg .mp3
59. omg .mp3
60. omg .mp3
61. omg .mp3
62. omg .mp3
63. omg .mp3
64. omg .mp3
65. omg .mp3
66. omg .mp3
67. omg .mp3
68. omg .mp3
69. omg .mp3
70. omg .mp3
71. omg .mp3
72. omg .mp3
73. omg .mp3
74. omg .mp3
75. omg .mp3
76. omg .mp3
77. omg .mp3
78. omg .mp3
79. omg .mp3
80. omg .mp3
81. omg .mp3
82. omg .mp3
83. omg .mp3
84. omg .mp3
85. omg .mp3
86. omg .mp3
87. omg .mp3
88. omg .mp3
89. omg .mp3
90. omg .mp3
91. omg .mp3
92. omg .mp3
93. omg .mp3
94. omg .mp3
95. omg .mp3
96. omg .mp3
97. omg .mp3
98. omg .mp3
99. omg .mp3

Po zastosowaniu numeracji plików od 01.- 100. problem iż wczytywało do pętli plik 10. po 1. oraz 20. po 2. itd. został rozwiązany.
Tego że wczytuje do pętli plik 100. po 09. nie rozumiem i nie wiem jak się z tym uporać.

Jak wczytać do pętli pliki w kolejności?
larry2003
Posty: 41
Rejestracja: 02 grudnia 2009, 14:26

Post autor: larry2003 »

A co jeśli zrobisz to na zasadzie:

Kod: Zaznacz cały

lista_plikow=`ls |sort -n`

for items in ${lista_plikow
[*]}; do
       echo ${items}
done

Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Niestety docelowo listowanie katalogu nie wchodzi w rachubę, chyba że istnieje sposób aby wczytać w ten sposób tylko *.mp3?
larry2003
Posty: 41
Rejestracja: 02 grudnia 2009, 14:26

Post autor: larry2003 »

W ten sposób tzn, w który?

Bo jeśli taki jak podałem powyżej to oczywiście:

Kod: Zaznacz cały


lista_plikow=`ls *.mp3|sort -n`  
for items in ${lista_plikow
[*]}; do
        echo ${items}
 done
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

No jest to w końcu jakieś rozwiązanie jednakże w przypadku kiedy w nazwach plików występują białe znaki no to będzie problem:

Kod: Zaznacz cały

.................
98 jest wyrazeniem wieloznakowym
99 jest wyrazeniem wieloznakowym
100 jest wyrazeniem wieloznakowym
01.
omg
.mp3
02.
omg
.mp3
03.
omg
.mp3
04.
omg
.mp3
05.
omg
.mp3

..........................

larry2003
Posty: 41
Rejestracja: 02 grudnia 2009, 14:26

Post autor: larry2003 »

Jak podasz jak to jest dokładnie zorganizowane, to nie ukrywam, że problem uda się rozwiązać łątwiej ;) teraz trochę wróżę z fusów:

Kod: Zaznacz cały

[B]lista_plikow=`ls |grep mp3|sort -n`  [/B]

for items in ${lista_plikow
[*]}; do
       echo ${items}
done

Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Chodzi o to by wczytać do pętli for wszystkie pliki mp3 z danego katalogu w kolejności od 01 do 100 bez względu na ich nazwy (czy są spacje w nazwach czy nie).

Twoje rozwiązanie działa znakomicie ale pod warunkiem, że nie ma białych znaków w nazwach plików.
larry2003
Posty: 41
Rejestracja: 02 grudnia 2009, 14:26

Post autor: larry2003 »

W takim razie może lepiej będzie na początku skryptu wyciąć wszystkie białe znaki z nazw plików?
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Czyli mam rozumieć ze bez edycji nazw plików się nie da?
larry2003
Posty: 41
Rejestracja: 02 grudnia 2009, 14:26

Post autor: larry2003 »

A możesz wkleić dokładne nazwy plików, które starasz się wylistować?

Dodane:
Z
nalazłem w międzyczasie coś takiego:

Kod: Zaznacz cały

Using find . -print0 seems to be the only safe way of  obtaining a list of files in bash due to the possibility of filenames  containing spaces, newlines, quotation marks etc.
wypróbuj:

Kod: Zaznacz cały

find . -type f -name "*.mp3" -print0
ODPOWIEDZ