GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie liste ich einen Dateinamen pro Ausgabezeile in Linux auf?

Ja, Sie können ganz einfach ls erstellen einen Dateinamen pro Zeile ausgeben:

ls -a | cat

Erläuterung:Der Befehl ls erkennt, ob die Ausgabe an ein Terminal oder an eine Datei oder Pipe erfolgt und passt sich entsprechend an.

Also, wenn Sie ls -a leiten Für Python sollte es ohne besondere Maßnahmen funktionieren.


Sie können ls -1 verwenden

ls -l wird auch die Arbeit erledigen


Verwenden Sie den -1 Option (beachten Sie, dass dies eine "Eins"-Ziffer ist, kein Kleinbuchstabe "L"), etwa so:

ls -1a

Stellen Sie jedoch zuerst sicher, dass Sie ls haben unterstützt -1 . GNU Coreutils (installiert auf Standard-Linux-Systemen) und Solaris tun es; Verwenden Sie im Zweifelsfall man ls oder ls --help oder überprüfen Sie die Dokumentation. Beispiel:

$ man ls
...
       -1     list one file per line.  Avoid '\n' with -q or -b

Ls ist für den menschlichen Gebrauch konzipiert, und Sie sollten seine Ausgabe nicht parsen.

In Shell-Skripten gibt es einige Fälle, in denen das Analysieren der Ausgabe von ls funktioniert, um den gewünschten Effekt am einfachsten zu erzielen. Da ls Nicht-ASCII-Zeichen und Steuerzeichen in Dateinamen verstümmeln kann, sind diese Fälle eine Teilmenge der Fälle, die keinen Dateinamen von ls benötigen .

In Python gibt es absolut keinen Grund, ls aufzurufen . Python hat alle ls 's Funktionalität eingebaut. Verwenden Sie os.listdir um den Inhalt eines Verzeichnisses aufzulisten und os.stat oder os um Datei-Metadaten zu erhalten. Weitere Funktionen im os Module sind wahrscheinlich auch für Ihr Problem relevant.

Wenn Sie über ssh auf entfernte Dateien zugreifen, ist sftp:

eine einigermaßen robuste Methode zum Auflisten von Dateinamen
echo ls -1 | sftp remote-site:dir

Dies gibt einen Dateinamen pro Zeile aus, und im Gegensatz zu ls Dienstprogramm, sftp verstümmelt keine nicht druckbaren Zeichen. Sie werden immer noch nicht in der Lage sein, Verzeichnisse zuverlässig aufzulisten, in denen ein Dateiname einen Zeilenumbruch enthält, aber das wird selten gemacht (denken Sie daran, dass dies ein potenzielles Sicherheitsproblem ist, kein Problem der Benutzerfreundlichkeit).

In Python (beachten Sie, dass Shell-Metazeichen Escapezeichen in remote_dir sein müssen ):

command_line = "echo ls -1 | sftp " + remote_site + ":" + remote_dir
remote_files = os.popen(command_line).read().split("\n")

Schlagen Sie für komplexere Interaktionen den Stapelmodus von sftp in der Dokumentation nach.

Auf einigen Systemen (Linux, Mac OS X, vielleicht einige andere Unices, aber definitiv nicht Windows) besteht ein anderer Ansatz darin, ein Remote-Dateisystem über ssh mit sshfs zu mounten und dann lokal zu arbeiten.


Linux
  1. Wie verschiebt man eine Zeile in einer Textdatei um eine Zeile nach oben oder unten?

  2. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

  3. Wie man Zeilen in einer Datei in UNIX/Linux zählt

  4. Wie drucke ich die Linux-Befehlsausgabe in eine Datei?

  5. Wie ersetze ich eine Datei im JAR durch die Befehlszeile in Linux?

So erstellen Sie eine Datei in Linux mit Terminal/Befehlszeile

So erstellen Sie eine Datei unter Linux

So speichern Sie die Linux-Befehlsausgabe in einem Bild oder einer Textdatei

So verknüpfen Sie eine Datei unter Linux per Symlink

So finden Sie die längste(n) Zeile(n) in einer Datei in Linux

So extrahieren Sie die Tar.xz-Datei in der Linux-Befehlszeile