und das lässt Sie immer noch mit './' vor jedem Dateinamen. Das ist kein wirkliches Problem, aber ich finde es irgendwie hässlich. Ich ging mit:
ls -p | grep -v '/$'
Dadurch erhalten Sie eine Auflistung, die gleich aussieht, und Sie können zusätzliche lsArgumente hinzufügen . --color=alwaysFüge ein hinzu und du bekommst deine Farben zurück oder -asiehst versteckte Dateien.
Ich mag Alexanders Antwort, weil er tatsächlich von einem Dateisystem abhängt, das für die betreffende Datei charakteristisch ist, damit er sich niemals täuschen lässt. Meine Antwort wird von einer Datei getäuscht, deren Name als letztes Zeichen ein '/' enthält. Aber das scheint, als würde es um Ärger bitten.
'-not' ist GNU-bezogen, da es nicht POSIX-konform ist. Es ist besser, diese Optionen nicht zu lehren, da ein Benutzer "schlechte" Gewohnheiten haben und sich auf anderen UNIX-Systemen verloren fühlen könnte :)
Systemen jirib
2
@JiriXichtkniha was ist die POSIX-Alternative zu -not?
Diese Antwort wurde bereits vor über einem Jahr von jamzed (mit diesem visuellen Geräusch) gegeben.
Alexx Roche
2
Die obigen "Find" -Lösungen verlieren einige der Funktionen von ls - zum Beispiel: Nur Dateien auflisten, sortiert in absteigender Änderungszeit.
Die "ls -p | grep" -Antworten befassen sich nicht elegant mit anderen Elementen von ls wie -R, falls sie gewünscht werden sollten
Die folgende Antwort, während ausführliche, meiner Meinung nach spiegelt das wahrste ls Verhalten und höchste Flexibilität für die Auswahl von „Dateien nur“
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Ersetzen Sie einfach die ls-Schalter wie gewünscht und das Ergebnis wird nur mit Dateien zurückgegeben. Wenn auch Verknüpfungen und andere Elemente erforderlich sind, müssten geringfügige Nacharbeiten durchgeführt werden, um die Aufnahme zu überprüfen.
Hiermit können Sie noch alle anderen Optionen verwenden, die lsnormalerweise in Anspruch genommen werden. Oder ... entfernen, -vum nur Verzeichnisse aufzulisten. Oder ... ersetzen Sie das Verzeichnis durch einen anderen Dateityp, der fileASCII, leer, ELF usw. versteht und meldet.
Dies funktioniert nicht, wenn einer der aufgelisteten Dateinamen Leerzeichen enthält.
Psychonaut
ls -t .|while read f;do [ -f "$f" ]&& echo $f;doneist in meinen Tests ungefähr 3x schneller
Alexx Roche
0
Ich befand mich auf einem System, das die findBinärdatei nicht unterstützte, -notund verwendete schließlich:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Vorteile: Verlässt sich nicht auf etwas anderes als sh ls echo
Ist kompatibel mit Bash und Dash.
Kann geändert werden, um mit anderen Dingen (z. B. Verzeichnissen) übereinzustimmen, indem -f
Is am schnellsten geändert wird als einige der Antworten. Benötigt weniger RAM und CPU
ls .
ohne Verzeichnisse - und hier ist es.-ls
oder-exec ls -l {} \;
würde es gernels -l
ohne Verzeichnisse machen.Um genau das
ls .
Gleiche zu erreichen , müssen Sie keine versteckten Verzeichnisse anzeigen.find . -maxdepth 1 -not -type d -and -not -name '.*'
und das lässt Sie immer noch mit './' vor jedem Dateinamen. Das ist kein wirkliches Problem, aber ich finde es irgendwie hässlich. Ich ging mit:
ls -p | grep -v '/$'
Dadurch erhalten Sie eine Auflistung, die gleich aussieht, und Sie können zusätzliche
ls
Argumente hinzufügen .--color=always
Füge ein hinzu und du bekommst deine Farben zurück oder-a
siehst versteckte Dateien.Ich mag Alexanders Antwort, weil er tatsächlich von einem Dateisystem abhängt, das für die betreffende Datei charakteristisch ist, damit er sich niemals täuschen lässt. Meine Antwort wird von einer Datei getäuscht, deren Name als letztes Zeichen ein '/' enthält. Aber das scheint, als würde es um Ärger bitten.
quelle
Versuche dies:
oder dieses:
quelle
Es ist zwar ein alter Beitrag, aber ich dachte, das könnte helfen ..
$ ls -l | grep -v ^ d
Es werden alle Dateien aufgelistet, einschließlich Symlinks, Zeichen- und Blockdateien.
quelle
Die obigen "Find" -Lösungen verlieren einige der Funktionen von ls - zum Beispiel: Nur Dateien auflisten, sortiert in absteigender Änderungszeit.
Die "ls -p | grep" -Antworten befassen sich nicht elegant mit anderen Elementen von ls wie -R, falls sie gewünscht werden sollten
Die folgende Antwort, während ausführliche, meiner Meinung nach spiegelt das wahrste ls Verhalten und höchste Flexibilität für die Auswahl von „Dateien nur“
Ersetzen Sie einfach die ls-Schalter wie gewünscht und das Ergebnis wird nur mit Dateien zurückgegeben. Wenn auch Verknüpfungen und andere Elemente erforderlich sind, müssten geringfügige Nacharbeiten durchgeführt werden, um die Aufnahme zu überprüfen.
quelle
Hiermit können Sie noch alle anderen Optionen verwenden, die
ls
normalerweise in Anspruch genommen werden. Oder ... entfernen,-v
um nur Verzeichnisse aufzulisten. Oder ... ersetzen Sie das Verzeichnis durch einen anderen Dateityp, derfile
ASCII, leer, ELF usw. versteht und meldet.quelle
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
ist in meinen Tests ungefähr 3x schnellerIch befand mich auf einem System, das die
find
Binärdatei nicht unterstützte,-not
und verwendete schließlich:Vorteile: Verlässt sich nicht auf etwas anderes als
sh ls echo
Ist kompatibel mit Bash und Dash.
Kann geändert werden, um mit anderen Dingen (z. B. Verzeichnissen) übereinzustimmen, indem
-f
Is am schnellsten geändert wird als einige der Antworten. Benötigt weniger RAM und CPU
quelle