2016-07-20 10 views
0

wie Dateityp in Bash-Skript

#!/bin/bash 
 

 

 
echo "" >> "regular file" 
 
echo "" >> "Directory file" 
 
echo "" >> "executable file" 
 
target="/home/personal/scripts/07_22_13/ford/$1" 
 
for f in "$target"/* 
 
do 
 
    echo $(basename $f) | ls -la 
 
    if [[ -x "$f" ]]; 
 
    then 
 
     echo "File '$f' is executable" 
 
    elif [[ -r "$f" ]]; 
 
    then 
 
     echo "file '$f' is regular" 
 
    else echo "file '$f' is directory" 
 
     echo "*(-^/)" 
 
    fi 
 
done

der Code drucken Sie alle Dateien mit den Zugriffsrechten drucken, wie ich neben jeder Datei drucken können, die den Typ (regular, Verzeichnis, ausführbare)


+1

warum nicht nur die Datei "stat"? -x/-f führen intern nur Stat-Aufrufe durch. Wenn Sie stat direkt aufrufen, erhalten Sie alle diese Informationen auf einmal. –

+0

Was ist 'echo $ (Basisname $ f) | ls -la soll das machen? 'ls' liest nicht von der Standardeingabe, also warum sind Sie dran? – Barmar

+0

Vielleicht meintest du "ls -la" $ f "'? – Barmar

Antwort

0
if [[ -x "$file" ]]; # File is executable 
if [[ -d "$file" ]]; # Is a directory 
+0

Das OP hat dies bereits. – chepner

+0

Wie kann ich den Typ neben jeder Datei drucken? –

+0

@sabaali: Eigentlich, wenn ich richtig verstehe, wird alles in Linux-System als eine Datei betrachtet. – sjsam

0

auf diese Weise versuchen

#!/bin/bash 

target="/path/to/target/" 

for file in `find ${target}` 
do 
    stat --format=%n\ -\ %F\ -\ %A $file 
    # %n prints the filename 
    # %F prints the filetype 
    # %A prints the permissions 
    #For more info stat --help or man stat 
done