Lassen Sie mich unter DOS einen alternativen Befehl für den folgenden Unix-Befehl kennen

7857
find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt|cut -f8 -d "/"|cut -c 1-12 > /coe/informatica/v712_OMJ/AONE/TgtFiles/ExtendedAOneWeeklySource/WeeklyDeltaFileLoadIDList.dat 

Bitte lassen Sie mich wissen, wie

cut -f8 -d and -name *AccessOne_DF_BIFs.txt //this is a file name in unix box 
0
Es gibt kein DOS! cmd.exe ist NICHT DOS und war schon lange nicht mehr dabei! Joachim Sauer vor 15 Jahren 1

6 Antworten auf die Frage

6
Shawn Chin

Re: die Verwendung von "cut -f8 -d" und "find -name"

cut -f8 -d "/" 

Das gibt Ihnen das acht Feld in einer Zeichenfolge, die durch "/" begrenzt wird. Auf einer Zeichenfolge wie "a / b / c / d / e / f / g / h / i / j" werden Sie also "h" erhalten.

find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt 

Die Option -name gibt das Muster an, für das ein Vergleich erfolgen soll. Der gesamte obige Befehl sucht rekursiv nach allen Dateien innerhalb des Archivverzeichnisses, das mit "AccessOne_DF_BIFs.txt" endet.

Das tut der ganze Befehl:

  • find / coe / informatica / v712_OMJ / AONE / SrcFiles / Archivname * AccessOne_DF_BIFs.txt - sucht rekursiv nach allen "AccessOne_DF_BIFs.txt" -Dateien im Archivverzeichnis
  • cut -f8 -d "/" - Extrahieren Sie aus der Ausgabe des vorherigen Befehls das durch "/" begrenzte Feld.
  • cut -c 1-12 - Extrahiert nur die ersten 12 Zeichen
  • > /coe/informatica/v712_OMJ/AONE/TgtFiles/ExtendedAOneWeeklySource/WeeklyDeltaFileLoadIDList.dat - Schreiben Sie die Ergebnisse in die Datei WeeklyDeltaFileLoadIDList.dat

Re: Windows-Ersatz

Mein DOS-Fu und PowerShell-Fu fehlt mir sehr, daher kann ich Ihnen dort nicht helfen. Sie können jedoch dieselben Befehle unter Windows verwenden, wenn Sie Cygwin oder MSYS verwenden . Beachten Sie jedoch, dass die Pfade zu Ihren Dateien unterschiedlich sind, wenn Sie von Cygwin / MSYS aus darauf zugreifen. Wenn Sie Windows-Verzeichnisstrukturen verwenden möchten (z. B. C: \ mein \ windblows \ -Verzeichnis), haben Sie mit MSYS möglicherweise eine bessere Chance.

~ Update ~

re: äquivalenter Befehl in DOS

Wir waren in der Kaffeepause unterwegs und das scheint für mich zu funktionieren.

DOS-fu:

@echo off  :: Source directory set SRCDIR="C:\coe\informatica\v712_OMJ\AONE\SrcFiles\Archive" :: Pattern to match set TARGET="*AccessOne_DF_BIFs.txt" :: Set output file set OUTFILE="C:\coe\informatica\v712_OMJ\AONE\TgtFiles\ExtendedAOneWeeklySource\WeeklyDeltaFileLoadIDList.dat"  :: Store current working directory so we can send user back set PWD=%cd% :: Move to source directory so our "dir" command will work cd %SRCDIR%  :: Reset previous output file del %OUTFILE%  :: This is where the script actually starts FOR /F "usebackq tokens=8 delims=\" %%a IN (`dir %TARGET% /s/b`) DO ( set X=%%a echo %X:~0,13% ) >> %OUTFILE%  :: Send user back to where he/she was cd %PWD% 

Nicht ganz der One-Liner, den Sie mit Unix 'find' und 'cut' bekommen können, aber es wird die gleiche Aufgabe erledigt (hoffe ich), wenn Sie nur integrierte DOS-Anweisungen verwenden.

Die FOR-Schleife macht den Job. Der Rest ist meistens dazu da, das Skript lesbarer zu machen.

Beachten Sie, dass " Echo% X: ~ 0,13% " kein Tippfehler ist und " Cut -c 1-12 " entsprechen sollte.

Ich wette, es gibt sauberere und elegantere Wege, dies zu tun. Dies war mein erster Versuch mit DOS-Fu, also sei nett.

Quellen:

Minor Nitpick: Das kann nicht unter DOS funktionieren. Es ist spezifisch für die Windows NT-Eingabeaufforderung (cmd.exe). Joey vor 15 Jahren 1
4
djna

Können Sie eines der Unix-ähnlichen Pakete wie Cygwin installieren?

Oder vielleicht eine Skriptsprache wie Perl installieren?

Funktioniert dieser Befehl von Ihnen tatsächlich? Vielleicht fehlt ein Abdruck vom Fund.

 find -name xxx 

Suchen Sie nach dem angegebenen Dateinamen

 cut -f 8 -d "/" 

in Felder aufgeteilt, die durch / getrennt sind, nehmen Sie das achte Feld

In der rohen Windows-Befehlszeile sind solche Dinge nicht so reibungslos, daher die Empfehlung, eine schönere Skriptumgebung zu installieren.

Windows ist ohne Cygwin unbrauchbar. Wie kann jemand mit den leistungsstarken Shell-Tools überleben? Ich persönlich habe jahrelang nicht auf Linux gewechselt (ich habe es nach XP gemacht), aber seit langer Zeit habe ich cygwin verwendet, ein sehr wichtiges Werkzeug. Der Link ist http://cygwin.com/ vor 15 Jahren 3
3
Dewfy

So ersetzen Sie den Cut-Befehl im DOS-Befehl "help"

siehe Syntax:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k 

Geben Sie stattdessen (myfile.txt) * AccessOne_DF_BIFs.txt an

Um es rekursiv zu machen, verwenden Sie eine Schleife

2
Eric J.

Auf SourceForge finden Sie hier einen Port gängiger Unix-Dienstprogramme (einschließlich find und cut).

Unter Windows gibt es keine Standardmethode, die mir bekannt ist.

0
user31894

Verwenden Sie für Ports von * nix-Tools für Windows die von GNU

0
speps

Ich kenne diese speziellen Befehle nicht, aber dies ist meine Referenz für Befehle: http://ss64.com/