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

6 ответов6

6

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-фу, так что будьте милы.

Источники:

4

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

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

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

 find -name  xxx

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

 cut -f 8 -d "/"

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

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

3

Подставить вырезать тип в 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

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

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

0

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .