дайте мне знать альтернативную команду в DOS для следующей команды unix

7276
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 
0
Там нет DOS! cmd.exe не DOS и не было целую вечность! Joachim Sauer 14 лет назад 1

6 ответов на вопрос

6
Shawn Chin

Re: использование "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»

Вот что делает вся команда:

  • 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

Re: замена Windows

Моего DOS-фу и PowerShell-фу очень не хватает, поэтому я не могу вам помочь. Тем не менее, вы можете использовать те же команды в Windows, если вы использовали Cygwin или MSYS . Однако обратите внимание, что пути к вашим файлам будут отличаться при доступе из Cygwin / MSYS. Если вы хотите использовать структуры каталогов Windows (например, C: \ my \ windblows \ directory), то у вас может быть больше шансов с MSYS.

~ Обновление ~

Re: эквивалентная команда в 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 - это то, что делает работу. Остальные в основном делают сценарий более читабельным.

Обратите внимание, что « echo% X: ~ 0,13% » не является опечаткой и должно быть эквивалентно « cut -c 1-12 ».

Бьюсь об заклад, есть более чистые и элегантные способы сделать это. Это была моя первая попытка DOS-фу, так что будьте милы.

Источники:

Незначительный придурок: это не может работать в DOS. Это относится к командной строке Windows NT (cmd.exe). Joey 14 лет назад 1
4
djna

Можете ли вы установить один из уникальных пакетов, таких как Cygwin?

Или, может быть, установить язык сценариев, таких как Perl?

Эта ваша команда действительно работает? Возможно, отсутствует отпечаток из находки.

 find -name xxx 

искать указанное имя файла

 cut -f 8 -d "/" 

разбить на поля, разделенные символом /, возьмем восьмое

Такие вещи не так гладки в сырой командной строке Windows, поэтому рекомендуется установить более приятную среду сценариев.

Windows не работает без Cygwin. Как можно выжить с помощью мощных инструментов оболочки? Лично я годами не переключался на Linux (я делал это после XP), но долгое время я использовал cygwin, очень важный инструмент. Ссылка http://cygwin.com/ 14 лет назад 3
3
Dewfy

Подставить вырезать тип в DOS команду "help for"

посмотрите на синтаксис:

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

вместо этого (myfile.txt) укажите * AccessOne_DF_BIFs.txt

сделать это рекурсивным циклом использования

2
Eric J.

Вы можете найти порт общих утилит Unix здесь на SourceForge (в том числе найти и вырезать).

Не существует готового способа сделать это в Windows, о котором я знаю.

0
user31894

для портов * nix tools в windows используйте те из GNU

0
speps

Я не знаю об этих конкретных командах, но это мой справочник по командам: http://ss64.com/