Σελίδα 1 από 2

Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2018, 00:04
από nikos_N
Καλησπέρα, Γνωρίζει κανείς αν μπορώ να χρησιμοποιήσω κάποια εντολή για να δημιουργήσω ταυτόχρονα πολλά directories τα οποία θα περιέχουν μέσα ένα συγκεκριμένο file;
Ρωτάω επειδή είναι πολύ βαρετή δουλειά για να το κάνει κανείς ένα ένα!
Ευχαριστώ!

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2018, 17:13
από pc_magas
Θες να δημιουργήσεις ένα πλήρες path πχ myfolder/folder1/folder2/folder3 ή έχεις έναν φάκελο και θες μονομιάς να τον γεμίσεις με 500 φακέλους χωρίς το όνομα να έχει κάποιο pattern;

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 06 Ιούλ 2018, 15:31
από nikos_N
pc_magas έγραψε:ή έχεις έναν φάκελο και θες μονομιάς να τον γεμίσεις με 500 φακέλους χωρίς το όνομα να έχει κάποιο pattern;

Αυτό αλλά αν είναι δυνατόν ο κάθε folder να εμπεριέχει μέσα και ένα συγκεκριμένο αρχείο (το ίδιο για όλους τους folders).
Αν δεν γίνεται εξαρχής με μία εντολή αυτό θα μπορούσα να δημιουργήσω πρώτα τα folders και μετά να τοποθετήσω το αρχείο ίσως; Πως είναι πιο εύκολο;
(ο κάθε φάκελος θα πρέπει να έχει μια ονομασία πχ φακελος1/φακελος2 κλπ)

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 06 Ιούλ 2018, 20:52
από kosmos890
Μπορείς να τρέξεις ενα script, για παραδειγμα
Κώδικας: Επιλογή όλων
#!/bin/bash

for i in {1..4}
do
mkdir "dir$i"
cd "dir$i"
touch "file$i"
cd ..
done

Το script δημιουργεί τα παρακάτω αρχεία
Κώδικας: Επιλογή όλων
.
├── dir1
│   └── file1
├── dir2
│   └── file2
├── dir3
│   └── file3
├── dir4
│   └── file4
└── script.sh

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 06 Ιούλ 2018, 22:37
από nikos_N
Δεν ξέρω πως ακριβώς τρέχουν τα scripts. Μπορείς να με βοηθήσεις λίγο; Απ'ότι καταλαβαίνω αυτό είναι που χρειάζομαι.
(Ερώτηση το σκριπτ αυτο δημιουργεί κατευθείαν τους φακέλους με το αρχείο ή πρέπει ξεχωριστά να κάνω τους φακέλους και ξεχωριστά να τοποθετηθεί το αρχείο;)

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 06 Ιούλ 2018, 23:05
από kosmos890
Με το gedit δημιουργησε το αρχείο myscript.sh και αποθήκευσε τον κώδικα που σου έδωσα.
Κάνε το αρχείο myscript.sh εκτελέσιμο. Αυτο μπορείς να το κάνεις είτε με δεξί κλικ επάνω στο αρχείο είτε απο την γραμμή εντολών.
Στην γραμμή εντολών, πηγαίνεις στον φάκελλο όπου βρίσκεται το αρχείο myscript.sh και δίνεις
Κώδικας: Επιλογή όλων
chmod  777 myscript.sh

Για να τρέξεις το myscript.sh
Κώδικας: Επιλογή όλων
./myscript.sh

ΔημοσίευσηΔημοσιεύτηκε: 07 Ιούλ 2018, 00:26
από nikos_N
OK Ευχαριστώ. Μπορείς να μου δώσεις λίγο και τα στοιχεία των παραμέτρων του σκριπτ και τι πρέπει να αντικαταστήσω; πχ το {1..4} είναι ο αριθμός των φακέλων που θέλω να φτιάξω; Το "i" τι ακριβως είναι; Επίσης το αρχείο που θέλω να περιέχουν οι φάκελοι πρέπει να είναι στον ίδιο φάκελο με το σκριπτ;

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 07 Ιούλ 2018, 09:40
από kosmos890
Το "i" τι ακριβως είναι;

Το i δεν χρειαζεται να το πειράξεις, είναι μια μεταβλητή για να τρέξει το loop. Το block εντολων μέσα στο loop θα εκτελεστεί για 4 φορές
Επίσης το αρχείο που θέλω να περιέχουν οι φάκελοι πρέπει να είναι στον ίδιο φάκελο με το σκριπτ;

Δες ξανά το δέντρο με τους φακέλους και τα αρχεία στο προηγούμενο post μου. Τα dir είναι φάκελοι, τα file αρχεία κειμένου.
Αρχικά έχεις το αρχείο myscript.sh
Μετά την εκτέλεση του script θα έχεις τα myscript.sh dir1 dir2 dir3 dir4.
Το dir1 θα περιέχει το file1, το dir2 το file2 κτλ.

Re: Εντολή για δημιουργία directory

ΔημοσίευσηΔημοσιεύτηκε: 07 Ιούλ 2018, 13:46
από nikos_N
kosmos890 έγραψε: Τα dir είναι φάκελοι, τα file αρχεία κειμένου.
ΟΚ κατάλαβα αλλά δεν θέλω να δημιουργηθεί ενα "file" μέσα σε κάθε φάκελο. Θέλω να τοποθετηθεί ένα συγκεκριμένο προϋπάρχον αρχείο (συγκεκριμένα ένα html που έχω φτιάξει) μέσα σε κάθε φάκελο. Μπορούμε να το ορίσουμε αυτό με το script;

Re: Εντολή για δημιουργία directory  Το θέμα επιλύθηκε

ΔημοσίευσηΔημοσιεύτηκε: 07 Ιούλ 2018, 18:57
από kosmos890
Το script.sh και file.html είναι στον ιδιο φάκελο.
Κώδικας: Επιλογή όλων
#!/bin/bash

for i in {1..4}
do
mkdir "dir$i"
cp file.html "dir$i"
done