Das Parsen lsist nie eine wunderbare Idee, aber was Sie versucht haben, hätte funktioniert, wenn Sie den Anker verwendet hätten ^, um den Beginn des Spiels zu kennzeichnen. ls -la | grep '^\.'
devnull
3
Nein, der Dateiname ist nicht der Anfang der Zeile mit dem Flag -l. ls -la | awk '$9 ~ /^\./'werden.
Wenn Sie die lsAusgabe analysieren möchten , müssen Sie sie ^zu Beginn der Regex hinzufügen und die -lOption nicht verwenden . Die Verwendung -lbewirkt, dass jede Zeilenausgabe mit Datei- oder Ordnerberechtigungsinformationen beginnt, nicht mit Datei- oder Ordnernamen. Sie sollten also Folgendes verwenden:
Dadurch werden alle Dateien aufgelistet, deren Name mit einem Punkt beginnt und die weder .noch sind ...
Beachten Sie, dass Sie, wenn Sie die Ausgabe von lsto weiterleiten möchten grep(was, wie von devnull hervorgehoben , niemals eine gute Idee ist), verwenden \lsoder command lsweil if lsein Alias ist, um Ihnen eine farbige Ausgabe anzuzeigen (wie es beispielsweise bei Debian der Fall ist). Die Ausgabe enthält ANSI-Escape-Sequenzen, um eine farbige Ausgabe zu erstellen, die Ihre Ausgabe auslöst, grepwenn das Muster am Zeilenanfang verankert ist.
Sie können -A(anstelle von -a) verwenden, um zu ignorieren ., ...
OJFord
@ OJFord + -Aunterscheidet sich von -aVerzeichnissen, in die lsabsteigt, aber beide werden (gleichermaßen) ignoriert und sind für Namen, die in der Befehlszeile mit -dWirkung angegeben sind, unbrauchbar . Auch wenn lsein Alias vorliegt, --color=auto ist die Rohrleitung in Ordnung. nur --color=alwaysoder --colorverursacht Ärger.
Dave_thompson_085
0
Die Lösung von val0x00ff ist wirklich gut, vergisst aber versteckte Verzeichnisse.
Wenn Sie versteckte Dateien und versteckte Verzeichnisse möchten , ohne. und .. :
Ihr Vorschlag schlägt unter VMware ESXi fehl (keine Dateien und keine Verzeichnisse auflisten) und schlägt auch unter Linux fehl (mit maxdepth> 1 werden auch alle Dateien in einem Verzeichnis aufgelistet, das mit a beginnt). Dies funktioniert jedoch sowohl unter Linux als auch unter ESXi: find . \( -type f -o -type d \) -name '\.*' -print;; maxdepthbei Bedarf anwenden .
Jeroen Wiert Pluimers
0
Unten ist man sehr kompakt und unterstützt viele Varianten
1) Zeigen Sie versteckte Dateien, Verzeichnisse und Unterverzeichnisse an
find . | grep "^\./\."
2) Zeigen Sie nur versteckte Verzeichnisse und Unterverzeichnisse an
find . -type d | grep "^\./\."
3) Versteckte Dateien nur in aktuellen und Unterverzeichnissen anzeigen
find . -type f | grep "^\./\."
4) Zeigen Sie versteckte Dateien und Verzeichnisse im aktuellen Ordner an
find .-maxdepth 1-type f -name '\.*'-print
find .-maxdepth 1 \( -type f -o -type d \) -name '\.*'-print
Natürlich können Sie verschiedene maxdepthWerte verwenden oder diese vollständig entfernen. Sehr hilfreich, wenn Sie zwischen Verzeichnissen ( -type d) oder regulären Dateien ( type f) oder beiden suchen und diese mit anderen Funktionen kombinieren möchten, z.
Ich habe die vorherige Antwort gesehen, sie ist nicht doppelt vorhanden, und definitiv haben "ls -a" und "ls -Ad" nicht die gleiche Bedeutung. "-a" bedeutet, dass alle einschließlich Dateien / Verzeichnisse mit "beginnen". -A bedeutet, alle außer "." , ".." und Verzeichnisinhalt.
ls
ist nie eine wunderbare Idee, aber was Sie versucht haben, hätte funktioniert, wenn Sie den Anker verwendet hätten^
, um den Beginn des Spiels zu kennzeichnen.ls -la | grep '^\.'
ls -la | awk '$9 ~ /^\./'
werden.Antworten:
ls -ld .*
wird tun was du willst.quelle
Muss funktionieren, wenn Sie jede versteckte Datei in der Verzeichnishierarchie auflisten möchten.
quelle
Wenn Sie die
ls
Ausgabe analysieren möchten , müssen Sie sie^
zu Beginn der Regex hinzufügen und die-l
Option nicht verwenden . Die Verwendung-l
bewirkt, dass jede Zeilenausgabe mit Datei- oder Ordnerberechtigungsinformationen beginnt, nicht mit Datei- oder Ordnernamen. Sie sollten also Folgendes verwenden:Oder Sie können mit
printf
bash eingebaut tun :Wenn Sie verwenden
zsh
, können Sie verwenden:quelle
Hier sind zwei weitere Möglichkeiten, um nur versteckte Dateien zu finden.
oder
Verwenden
-maxdepth
Sie diese Option, um anzugeben, wie weit Sie im Verzeichnisbaum suchen möchten.quelle
Eine Verbesserung von Flups Antwort :
Dadurch werden alle Dateien aufgelistet, deren Name mit einem Punkt beginnt und die weder
.
noch sind..
.Beachten Sie, dass Sie, wenn Sie die Ausgabe von
ls
to weiterleiten möchtengrep
(was, wie von devnull hervorgehoben , niemals eine gute Idee ist), verwenden\ls
odercommand ls
weil ifls
ein Alias ist, um Ihnen eine farbige Ausgabe anzuzeigen (wie es beispielsweise bei Debian der Fall ist). Die Ausgabe enthält ANSI-Escape-Sequenzen, um eine farbige Ausgabe zu erstellen, die Ihre Ausgabe auslöst,grep
wenn das Muster am Zeilenanfang verankert ist.quelle
-A
(anstelle von-a
) verwenden, um zu ignorieren.
,..
.-A
unterscheidet sich von-a
Verzeichnissen, in diels
absteigt, aber beide werden (gleichermaßen) ignoriert und sind für Namen, die in der Befehlszeile mit-d
Wirkung angegeben sind, unbrauchbar . Auch wennls
ein Alias vorliegt,--color=auto
ist die Rohrleitung in Ordnung. nur--color=always
oder--color
verursacht Ärger.Die Lösung von val0x00ff ist wirklich gut, vergisst aber versteckte Verzeichnisse.
Wenn Sie versteckte Dateien und versteckte Verzeichnisse möchten , ohne. und .. :
quelle
find . \( -type f -o -type d \) -name '\.*' -print
;;maxdepth
bei Bedarf anwenden .Unten ist man sehr kompakt und unterstützt viele Varianten
1) Zeigen Sie versteckte Dateien, Verzeichnisse und Unterverzeichnisse an
find . | grep "^\./\."
2) Zeigen Sie nur versteckte Verzeichnisse und Unterverzeichnisse an
find . -type d | grep "^\./\."
3) Versteckte Dateien nur in aktuellen und Unterverzeichnissen anzeigen
find . -type f | grep "^\./\."
4) Zeigen Sie versteckte Dateien und Verzeichnisse im aktuellen Ordner an
find . -maxdepth 1 | grep "^\./\."
quelle
Du kannst es versuchen:
Natürlich können Sie verschiedene
maxdepth
Werte verwenden oder diese vollständig entfernen. Sehr hilfreich, wenn Sie zwischen Verzeichnissen (-type d
) oder regulären Dateien (type f
) oder beiden suchen und diese mit anderen Funktionen kombinieren möchten, z.(zB letzte geänderte Zeit, basierend auf @piroux Beispiel - vervollständigt von @ jeroen-wiert-pluimers )
quelle
Du kannst es versuchen :
^ zeigt an, dass dies der Beginn des Inhalts mit regulärem Ausdruck ist
quelle