Re: việc sử dụng "cut -f8 -d" và "find -name"
cut -f8 -d "/"
Điều đó cung cấp cho bạn tám trường trong một chuỗi được phân tách bằng "/". Vì vậy, trên một chuỗi như "a / b / c / d / e / f / g / h / i / j" nó sẽ cung cấp cho bạn "h"
find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt
Tùy chọn -name chỉ định mẫu phù hợp cho. Toàn bộ lệnh ở trên sẽ tìm kiếm đệ quy tất cả các tệp trong thư mục Lưu trữ kết thúc bằng "AccessOne_DF_BIFs.txt"
Đây là những gì toàn bộ lệnh thực hiện:
- tìm / coe / informationatica / v712_OMJ / AONE / SrcFiles / Lưu trữ -name * AccessOne_DF_BIFs.txt - tìm đệ quy tất cả các tệp "AccessOne_DF_BIFs.txt" trong thư mục Lưu trữ
- cắt -f8 -d "/" - Từ đầu ra của lệnh trước đó, trích xuất tám trường được giới hạn bởi "/"
- cắt -c 1-12 - Chỉ trích xuất 12 ký tự đầu tiên
- & gt; / coe - Viết kết quả vào tệp WeeklyDeltaFileLoadIDList.dat
Re: Thay thế Windows
Của tôi DOS-fu và PowerShell-fu thiếu trầm trọng, vì vậy tôi không thể giúp bạn ở đó. Tuy nhiên, bạn có thể sử dụng các lệnh tương tự trên windows nếu bạn đã sử dụng Cygwin hoặc là MSYS . Tuy nhiên, xin lưu ý rằng các đường dẫn đến tệp của bạn sẽ khác khi được truy cập từ bên trong Cygwin / MSYS. Nếu bạn muốn sử dụng cấu trúc thư mục windows (ví dụ: thư mục C: \ my \ Windblows \), thì bạn có thể có cơ hội tốt hơn với MSYS.
~ Cập nhật ~
re: lệnh tương đương trong DOS
Có một chuyến đi trong thời gian nghỉ cà phê và điều này dường như làm việc cho tôi.
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%
Không hoàn toàn là một lớp lót mà bạn có thể có với Unix 'find' và 'cut', nhưng nó hoàn thành công việc tương tự (tôi hy vọng) chỉ sử dụng các chỉ thị DOS tích hợp.
Vòng lặp FOR là công việc gì. Phần còn lại chủ yếu ở đó để làm cho kịch bản dễ đọc hơn.
Lưu ý rằng " tiếng vang% X: ~ 0,13% "không phải là một lỗi đánh máy và phải tương đương với" cắt -c 1-12 ".
Tôi cá là có những cách sạch sẽ và thanh lịch hơn để làm điều đó. Đây là nỗ lực đầu tiên của tôi tại DOS-fu nên rất tuyệt.
Nguồn: