让我知道 DOS 中用于遵循 unix 命令的备用命令

1 windows unix shell-script

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
Run Code Online (Sandbox Code Playgroud)

请让我知道使用

cut -f8 -d and -name *AccessOne_DF_BIFs.txt //this is a file name in unix box
Run Code Online (Sandbox Code Playgroud)

Sha*_*hin 6

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

cut -f8 -d "/"
Run Code Online (Sandbox Code Playgroud)

这为您提供了由“/”分隔的字符串中的八个字段。所以在像 "a/b/c/d/e/f/g/h/i/j" 这样的字符串上它会给你 "h"

find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt
Run Code Online (Sandbox Code Playgroud)

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

这是整个命令的作用:

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

回复:Windows 更换

我的DOS-fuPowerShell-fu严重缺乏,所以我无法帮助你。但是,如果您使用CygwinMSYS ,则可以在 Windows 上使用相同的命令。但是请注意,从 Cygwin/MSYS 中访问时,文件的路径会有所不同。如果您希望使用 windows 目录结构(例如 C:\my\windblows\directory),那么您可能有更好的机会使用 MSYS。

~更新~

re: DOS 中的等效命令

在喝咖啡休息时试了一下,这似乎对我有用。

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%
Run Code Online (Sandbox Code Playgroud)

不完全是您可以使用 Unix 'find' 和 'cut' 获得的单行,但它只使用内置的 DOS 指令完成相同的工作(我希望)。

FOR 循环的作用是什么。其余的主要是为了使脚本更具可读性。

请注意,“ echo %X:~0,13% ”不是拼写错误,应该等同于“ cut -c 1-12 ”。

我敢打赌有更干净、更优雅的方法来做到这一点。这是我对 DOS-fu 的第一次尝试,所以请保持友善。

资料来源: