Δημοσιεύτηκε: 13 Ιούλ 2011, 21:03
από parenthesis
Εχμ, μόλις ξεκίνησα ν'ασχολούμαι με το bash και έχω κάποιες απορίες. Βασικά, θέλω να γράψω ένα scriptάκι που θα δέχεται από το τερματικό το όνομα ενός αρχείου και θα ψάχνει να το βρει στον τρέχοντα κατάλογο και σε όλους τους υποκαταλόγους του (πρώτου επιπέδου). Αν το βρει, να εμφανίζει την τοποθεσία του.
Η μια λύση είναι να χρησιμοποιήσω την 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. Απ'ό,τι καταλαβαίνω, αντί να ψάχνει μόνο στους υποκαταλόγους του τρέχοντος καταλόγου, ψάχνει παντού...

[Δεν ξέρω αν είναι σωστό μέρος για το ποστ, αν όχι παρακαλώ κάποιος να το μεταφέρει...]