Frage Wie finde ich, wenn Leerzeichen in den Verzeichnisnamen vorhanden sind?


Ich muss alles finden .nfo Dateien in meinem Medienverzeichnis, die ich verwenden kann sed um einige Teile zu ändern. Das Problem ist, dass meine Ordner Leerzeichen in den Namen enthalten.

find  /media/media1/HDTV -name  \*.nfo -type f 
media/media1/HDTV/Band of Brothers/Season 1/
…

Die Ausgabedatei wird nicht von a gefunden sed Befehl zum Ändern der Zeichenfolgen, die ich möchte.


4
2018-06-09 11:48


Ursprung


Für ein gutes Lesen von Sonderzeichen (Leerzeichen, &, #, usw.) in Dateinamen, versuchen Sie es tuxfiles.org/linuxhelp/weirdchars.html - James
Das Problem ist nicht mit findEs interessiert sich nicht für Sonderzeichen in Dateinamen. Das Problem ist mit dem, was Sie mit dem tun find Ausgabe. Veröffentlichen Sie den vollständigen Befehl, den Sie ausprobiert haben, und erklären Sie genau, was Sie mit den Dateien machen möchten. - Gilles


Antworten:


find interessiert sich nicht für Sonderzeichen in Dateinamen, aber das Programm, das die Ausgabe von analysiert find Macht. Wenn du es benutzt xargs, benutze die -print0 Option zu find, und das -0 Option zu xargs. Das sagt find und xargs Verwenden von Nullzeichen (die nicht in Dateinamen vorkommen können) als Trennzeichen zwischen Dateinamen und xargs kein anderes Parsing durchzuführen, bei dem Dateinamen mit Leerzeichen fehlen würden.

find /media/media1/HDTV -name '*.nfo' -type f -print0 |
xargs -0 sed -i 's/pattern/replacement/'

Eine andere Möglichkeit, einen Befehl für viele Dateien aufzurufen, ist die Verwendung find nur.

find /media/media1/HDTV -name '*.nfo' -type f -exec sed -i 's/pattern/replacement/' {} +

6
2018-06-09 12:09





Tippen Sie normal, aber setzen Sie ein \ nach dem Wort und vor dem Leerzeichen.

d.h. cd ~/home/New\ Volume/movies/new\ stuff


-2
2018-06-09 12:00



Ich brauche eine Option, um mir das zu geben: Suche Option: Medien / Media1 / HDTV / Band \ von \ Brothers / Season \ 1 / ... - papampi