Derzeit lernen einige Bash-Skripte und ein Problem mit einer Frage mit der Auflistung aller Dateien in einem bestimmten Verzeichnis und Angabe, ob sie eine Datei oder ein Verzeichnis sind. Das Problem, das ich habe, ist, dass ich nur entweder mein aktuelles Verzeichnis bekomme oder wenn ein Verzeichnis angegeben wird, es wird einfach gesagt, dass es ein Verzeichnis ist, z./home/user/shell_scripts gibt zurück shell_scipts ist ein Verzeichnis und nicht die darin enthaltenen Dateien. Das ist, was ich habe, so weit:Shell-Skript zum Auflisten von Dateien in einem bestimmten Verzeichnis und wenn es Dateien oder Verzeichnisse sind
dir=$dir
for file in $dir; do
if [[ -d $file ]]; then
echo "$file is a directory"
if [[ -f $file ]]; then
echo "$file is a regular file"
fi
done
Dies könnte brechen, wenn es wirklich viele Dateien gibt (Befehlszeile zu lang). – user1934428
Ja, es ist _possible_, obwohl ich diesen Ansatz oft für sehr viele Dateien (> 10^5) verwendet habe und kein Problem hatte. Ich wäre versucht, den 'for' /' do'/'done' Ansatz zu verwerfen und, wenn möglich, direkt den' ls' oder 'find' Befehl zu verwenden, was sehr viel effizienter wäre - obwohl ich versuche, in den Anwendungsbereich von die OP-Frage. Ich werde entsprechend aktualisieren. –
Dies funktioniert nicht gut mit Dateinamen, die Leerzeichen oder andere Sonderzeichen enthalten. – Biffen