xargs interpretiert Backslashes unter Windows falsch

540
vlad_tepesch

Ich verwende gnuwin32-Dienstprogramme unter Windows 7.

Ich möchte eine Dateiliste weiterleiten xargs, um die Dateien zu entfernen.

Wenn ich jedoch normale Windows-Pfade durchlasse, interpretiert und entfernt xargs die Backslashes

dir /B /S c:\windows\system32\*.sys | head | xargs echo 

führt zur folgenden Eingabe von xargs

c:\windows\system32\clfs.sys c:\windows\system32\win32k.sys c:\windows\system32\drivers\1394bus.sys c:\windows\system32\drivers\1394ohci.sys c:\windows\system32\drivers\acpi.sys c:\windows\system32\drivers\acpipmi.sys c:\windows\system32\drivers\adp94xx.sys c:\windows\system32\drivers\adpahci.sys c:\windows\system32\drivers\adpu320.sys c:\windows\system32\drivers\afd.sys 

das druckt dann

c:windowssystem32clfs.sys c:windowssystem32win32k.sys c:windowssystem32drivers1394bus.sys c:windowssystem32drivers1394ohci.sys c:windowssystem32driversacpi.sys c:windowssystem32driversacpipmi.sys c:windowssystem32driversadp94xx.sys c:windowssystem32driversadpahci.sys c:windowssystem32driversadpu320.sys c:windowssystem32driversafd.sys 

mit den Backslashes entfernt. Anstatt die Eingabe einfach auf der Kommandozeile auszugeben, analysiert und interpretiert sie die Zeichenfolgen, die ich meiner Meinung nach nicht tun sollte.

Wie kann man das umgehen?

1
Zitieren Sie den Dateipfad. Dies ist der Standardansatz, um Escape-Zeichen zu entfernen. Ich bin jedoch überrascht, dass Sie keine Probleme mit den Switches in dir haben. Frank Thomas vor 8 Jahren 0
@FrankThomas Ich verstehe nicht was du meinst. Das Problem ist nicht der Befehl 'dir'. vlad_tepesch vor 8 Jahren 0
Erhalten Sie dasselbe Ergebnis, wenn Sie GNU Parallel anstelle von xargs verwenden? Ole Tange vor 8 Jahren 0

1 Antwort auf die Frage

0
Ole Tange

Ich kann Ihre Erkenntnisse auf GNU Linux reproduzieren. Hier ist die Lösung, stattdessen GNU Parallel zu verwenden. Also versuchen Sie es mit GNU Parallel:

dir /B /S c:\windows\system32\*.sys | head | parallel echo 

Es wurde auf CygWin getestet, daher könnte es auch nur mit gnuwin32 funktionieren.

es scheint, dass gnuwin32 nicht `parallel` enthält :-( vlad_tepesch vor 8 Jahren 0
Einfach zu installieren: wget pi.dk/3; bash 3 Ole Tange vor 8 Jahren 0