Δημοσιεύτηκε: 13 Ιούλ 2011, 21:03
Εχμ, μόλις ξεκίνησα ν'ασχολούμαι με το bash και έχω κάποιες απορίες. Βασικά, θέλω να γράψω ένα scriptάκι που θα δέχεται από το τερματικό το όνομα ενός αρχείου και θα ψάχνει να το βρει στον τρέχοντα κατάλογο και σε όλους τους υποκαταλόγους του (πρώτου επιπέδου). Αν το βρει, να εμφανίζει την τοποθεσία του.
Η μια λύση είναι να χρησιμοποιήσω την find, κάπως έτσι :
Αλλά δεν ξέρω τι να κάνω για να μου εκτυπώνει την πλήρη διαδρομή του αρχείου. Κι επίσης, πώς θα γίνει να τροποποιήσω τον κώδικα ώστε να εμφανίζει μήνυμα "not found" αν δε βρει τπτ?
Η άλλη λύση που σκέφτηκα είναι αυτή :
Εδώ, πάλι, κάτι δεν πάει καλά με την for. Απ'ό,τι καταλαβαίνω, αντί να ψάχνει μόνο στους υποκαταλόγους του τρέχοντος καταλόγου, ψάχνει παντού...
[Δεν ξέρω αν είναι σωστό μέρος για το ποστ, αν όχι παρακαλώ κάποιος να το μεταφέρει...]
Η μια λύση είναι να χρησιμοποιήσω την find, κάπως έτσι :
- Κώδικας: Επιλογή όλων
filename=$1
find . -maxdepth 2 -type f -name "$filename" -print
Αλλά δεν ξέρω τι να κάνω για να μου εκτυπώνει την πλήρη διαδρομή του αρχείου. Κι επίσης, πώς θα γίνει να τροποποιήσω τον κώδικα ώστε να εμφανίζει μήνυμα "not found" αν δε βρει τπτ?
Η άλλη λύση που σκέφτηκα είναι αυτή :
- Κώδικας: Επιλογή όλων
filename=$1
folder=$(pwd)
if [ ! -f "$filename" ]; then
for dir in $folder/*; do
if [ -d "$dir" ]; then
cd "$dir"
if [ ! -f "$filename" ]; then
found=false
else
found=true
echo "found"
locate $filename
fi
fi
done
if [ $found != true ]; then
echo "not found"
fi
else
locate $filename
fi
Εδώ, πάλι, κάτι δεν πάει καλά με την for. Απ'ό,τι καταλαβαίνω, αντί να ψάχνει μόνο στους υποκαταλόγους του τρέχοντος καταλόγου, ψάχνει παντού...
[Δεν ξέρω αν είναι σωστό μέρος για το ποστ, αν όχι παρακαλώ κάποιος να το μεταφέρει...]