Beste Möglichkeit, nur Dateien aufzulisten, die mir gehören

Beste Möglichkeit, nur Dateien aufzulisten, die mir gehören

Was wäre der beste „einzeilige“ Shell-Befehl, mit dem ich alle Dateien in einem Verzeichnis auflisten und nur die anzeigen könnte, die mir gehören?

Antwort1

Ein kurzer Einzeiler wäre:

find . -maxdepth 1 -user $USER

Wenn Sie im aktuellen Verzeichnis suchen, können Sie das weglassen .. Wenn Sie nicht wissen, ob $USERverfügbar ist, können Sie es durch $LOGNAMEoder ersetzen $(whoami).

Hinzufügen, -lsum Dateidetails anzuzeigen, zB:

find / -maxdepth 1 -user root -ls

Wenn Sie benutzerdefinierte Flags bereitstellen möchten, lskönnen Sie dies über Folgendes tun -exec:

find / -maxdepth 1 -user root -exec ls -ld {} +

(In diesem Fall ist das -dFlag lserforderlich, um Verzeichnisse als sich selbst und nicht als deren Inhalt aufzulisten.)

Antwort2

Verwenden Sie den folgenden Befehl

[username@localhost~]$ find / -user username -exec ls -l {} \; 2>/dev/null

Suche alle Dateien im gesamten System, die dem Benutzernamen gehören. Wenn Sie in einem bestimmten Verzeichnis suchen, ersetzen Sie einfach den Speicherort durch / .

[username@localhost~]$ find /path/of/direcotry -user username -exec ls -l {} \; 2>/dev/null

NB:2>/dev/null macht die Fehlerausgabe ungültig.

Antwort3

Da du das Format der Ausgabe nicht angegeben hast, könntest du dies auch mit ls und grep tun:

ls -lG | grep username

Zuerst verwenden wir ls mit dem Parameter -l, um die Liste zu erhalten, die Benutzernamen und Gruppennamen enthält.

Anschließend entfernen wir mit dem Parameter -G den Gruppennamen aus dem Ergebnis.

Danach leiten wir es einfach an grep weiter und erhalten alle Ergebnisse mit dem gewünschten Benutzernamen.

BEARBEITEN: Wie in den Kommentaren erwähnt, ist dieskein Safeoder eine absolut sichere Lösung - je nach Ihren Umständen kann es jedoch auch eine schnelle und einfache Lösung sein. Interaktiv kann es akzeptabel sein, aber Sie sollten es in keinem Skript verwenden!

Antwort4

Mit zshkönnen Sie dies mithilfe derGlob-Qualifiziereru:

uAusweis

Dateien im Besitz der Benutzer-IDAusweiswenn es sich um eine Zahl handelt. AndernfallsAusweisgibt einen Benutzernamen an: Das Zeichen nach ' u' wird als Trennzeichen verwendet und die Zeichenfolge zwischen diesem und dem nächsten übereinstimmenden Trennzeichen wird als Benutzername verwendet. Die Starttrennzeichen ' [', ' {' und ' <' entsprechen den Endtrennzeichen ' ]', ' }' und ' >'; jedes andere Zeichen entspricht sich selbst. Die ausgewählten Dateien sind diejenigen, die diesem Benutzer gehören. Beispielsweise wählt ' u:foo:' oder ' u[foo]' Dateien aus, die dem Benutzer ' foo' gehören.

also zB mit BenutzerID

print -rl ./*(u1027)

oder mit Benutzernamen

print -rl ./*(u_yourusernamegoeshere_)

Wie üblich können Sie es mit anderen Qualifikatoren, Modifikatoren usw. kombinieren, um beispielsweise nur normale Dateien aufzulisten, versteckt oder nicht, die dem Benutzer gehören UID 1027und nach ihrem sortiert sind mtime:

print -rl ./*(.Domu1027)

verwandte Informationen