Alle Dateien suchen, um zu protokollieren, und Zeichenfolge hinzufügen, um BASH zu protokollieren

349
Mike

Suchen Sie alle Dateien im Ordner, erstellen Sie eine Liste (Protokoll) und das Protokoll am Anfang jeder Zeile Anhängen an "mkdir -p / VOLUME1 / path"

So was:

/volume1/TEST/folder1/1.jpg /Volume1/TEST/folder2/2.jpg 

Ich versuche folgendes: 1 # CD-Verzeichnis:

cd /volume1/TEST 

2 # LOG machen

ls **/* >/volume1/log.txt 

3 # Neuen Pfad hinzufügen (String)

sed -e 's/^/mkdir -p /VOLUME1/TEST2/' /volume1/log.txt >/volume1/log2.txt 

Ich brauche das: in jeder Zeile hinzufügen:

mkdir -p /Volume1/TEST2/folder1/1.jpg mkdir -p /Volume1/TEST2/folder2/2.jpg . . 

aber meine Ausgabe ist "/Volume1/TEST2/ folder1/1.jpg" (ich vermisse "mkdir -p/Volume1/"und Lücke ist darüber hinaus

(LINUX)

0

1 Antwort auf die Frage

0
manuelvigarcia

Sie müssen den Backslashes entkommen. Zumindest hat es für mich funktioniert:

sed -e 's/^/mkdir -p \/VOLUME1\/TEST2\//' log.txt > log2.txt 

Der Anfang des Ergebnisses:

mkdir -p /VOLUME1/TEST2/confEclipse/MIT-Eclipse-CheckStyle-20160408.xml mkdir -p /VOLUME1/TEST2/confEclipse/MIT-Eclipse-CodeStyle-CleanUp-20160408.xml mkdir -p /VOLUME1/TEST2/confEclipse/MIT-Eclipse-CodeStyle-CodeTemplates-20160408 
Jetzt funktioniert es gut, aber ich fand heraus, dass in den Dateinamen keine Lücken sein können, wie zum Beispiel TEST NAME, würden Sie nicht wissen, wie es jetzt zu tun ist? (TEST-Datei war nur Beispiele) Mike vor 8 Jahren 0
In meinem Test bekomme ich keine Lücken. Enthalten die Dateinamen bereits Lücken? Möglicherweise müssen Sie die Leerzeichen entfernen, bevor Sie den Teil "mkdir ..." hinzufügen manuelvigarcia vor 8 Jahren 0
Gibt es Neuigkeiten zu den Lücken? manuelvigarcia vor 8 Jahren 0