Fügen Sie Leerzeichen zwischen Dateipfaden hinzu

Fügen Sie Leerzeichen zwischen Dateipfaden hinzu

Ich habe eine Liste von Ordnern und in jedem Ordner habe ich die Datei „file.txt“, die in allen Ordnern den gleichen Namen hat. Ich wollte den Pfad für diese Datei aus allen Ordnern sammeln und in einer Textdatei speichern. Dazu habe ich den folgenden Befehl im übergeordneten Ordner ausgeführt:

find $PWD -type f -name "file.txt" > paths.txt

Dieser Befehl speichert alle Pfade zu dieser Datei aus allen Ordnern in der Datei „path.txt“ wie folgt:

a/b/c/1/file.txt
a/b/c/2/file.txt
a/b/c/3/file.txt
a/b/c/4/file.txt
a/b/c/5/file.txt
a/b/c/6/file.txt
a/b/c/7/file.txt
.
.
.
.

Wie kann ich in der Datei „path.txt“ Platz zwischen den Zeilen schaffen, sodass sie wie folgt aussieht:

/a/b/c/1/file.txt /a/b/c/2/file.txt /a/b/c/3/file.txt /a/b/c/4/file.txt /a/b/c/5/file.txt /a/b/c/6/file.txt /a/b/c/7/file.txt ...

Antwort1

Noch eine Möglichkeit, find(1)nur zum Spaß, vorausgesetzt GNU :

find $PWD -type f -name "file.txt" -printf '%p '

Antwort2

Sie können das LF-Zeichen mit dem Befehl 'tr' durch ein Leerzeichen ersetzen

tr '\012' ' ' < path.txt

Dies kann Teil des ursprünglichen Befehls sein:

find $PWD -type f -name "file.txt" | tr '\012' ' ' > paths.txt

Antwort3

Eine einfache Möglichkeit wäre, die findAusgabe weiterzuleiten xargs(deren Standardaktion, wenn kein expliziter Befehl gegeben wird, darin besteht, die Argumente wiederzugeben).

find $PWD -type f -name "file.txt" | xargs > paths.txt

Im Gegensatz zum einfachen Ersetzen aller Zeilenumbrüche durch Leerzeichen bleibt hier der letzte Zeilenumbruch erhalten.

Antwort4

pasteSie können auch verwenden ,

find . -type f -name "path.txt" -exec paste -d' ' -s {} \; > path.txt

verwandte Informationen