2013-02-01 18 views
5

Ich versuche zu überprüfen, ob ein Argument ein Verzeichnis oder eine Datei ist. Ich möchte ein/hinter jedem Verzeichnisnamen und ein * nach jeder ausführbaren Datei setzen. Ich weiß, dass ich -F verwende, um diese Informationen zu bekommen, aber ich kann das in meinem Skript nicht herausfinden.Überprüfen Sie, ob Argument eine Datei oder ein Verzeichnis ist

Hier ist mein Code:

echo -n "Please enter Directory name you wish to search: " 
read dir 

for filename in "/home/me/Desktop/$dir"/* 

do 

    if (-F $filename) 
    then 
    echo $filename 

    fi 
done 

Antwort

9

[ -f "$filename" ] gilt für Dateien, [ -d "$dirname" ] gilt für Verzeichnisse.

+0

Ich bekomme immer einen Fehler nach der Änderung meines Codes – Tomala

+0

@Tomala: Welcher Fehler? Wie hast du deinen Code geändert? – choroba

+0

Ich meine dort keinen Fehler, aber es zeigt nicht "/" für Verzeichnis und "*" für eine Datei, wie es tut, wenn ich nur ls -F. Irgendwelche Ideen ? ? – Tomala

Verwandte Themen