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: