让我知道 DOS 中以下 unix 命令的替代命令

让我知道 DOS 中以下 unix 命令的替代命令
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

请让我知道使用

cut -f8 -d and -name *AccessOne_DF_BIFs.txt //this is a file name in unix box

答案1

回复:“cut -f8 -d”和“find -name”的使用

cut -f8 -d "/"

这将为您提供以“/”分隔的字符串中的八个字段。因此,对于“a/b/c/d/e/f/g/h/i/j”这样的字符串,它将为您提供“h”

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

-name 选项指定要匹配的模式。上面的整个命令将递归搜索 Archive 目录中以“AccessOne_DF_BIFs.txt”结尾的所有文件

整个命令的作用如下:

  • 查找/coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt- 递归查找存档目录中的所有“AccessOne_DF_BIFs.txt”文件
  • 剪切-f8-d“/”- 从上一个命令的输出中提取以“/”分隔的八个字段
  • 剪切 -c 1-12- 仅提取前 12 个字符
  • > /coe/informatica/v712_OMJ/AONE/TgtFiles/ExtendedAOneWeeklySource/WeeklyDeltaFileLoadIDList.dat- 将结果写入 WeeklyDeltaFileLoadIDList.dat 文件

回复:Windows 替换

我的DOS系统PowerShell 功能严重缺乏,所以我无法帮助你。但是,如果你使用过赛格威或者管理系统。但请注意,从 Cygwin/MSYS 访问时,文件的路径会有所不同。如果您希望使用 Windows 目录结构(例如 C:\my\windblows\directory),那么使用 MSYS 可能更合适。

~ 更新 ~

回复:DOS 中的等效命令

在咖啡休息期间尝试了一下,这似乎对我有用。

DOS功能:

@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%

虽然它不完全是使用 Unix 的“find”和“cut”可以获得的单行命令,但是它仅使用内置的 DOS 命令就可以完成相同的工作(我希望如此)。

FOR 循环就是完成这项工作的。其余部分主要是为了使脚本更具可读性。

注意 ”回显 %X:~0,13%“ 不是拼写错误,应该等同于“剪切 -c 1-12“。

我敢打赌肯定有更干净、更优雅的方法来实现这一点。这是我第一次尝试 DOS-fu,所以请多多包涵。

资料来源:

答案2

您能安装类似 UNIX 的软件包(例如 Cygwin)吗?

或者也许安装诸如 Perl 之类的脚本语言?

你的命令真的有效吗?可能是 find 中缺少 -print。

 find -name  xxx

查找指定的文件名

 cut -f 8 -d "/"

拆分成以 / 分隔的字段,取第 8 个

在原始的 Windows 命令行中,这样的事情并不是那么顺利,因此建议安装一个更好的脚本环境。

答案3

要在 DOS 命令中替换 cut 类型“help for”

看看语法:

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

相反(myfile.txt)指定*AccessOne_DF_BIFs.txt

使其递归使用循环

答案4

对于 *nix 工具到 Windows 的移植,请使用GNU

相关内容