Манипулирование именами файлов в cygwin - PullRequest
1 голос
/ 06 марта 2012

Я использую cygwin на Windows 7 .Я использую инструмент обработки сигналов и в основном выполняю выравнивания.У меня было около 1200 входных файлов.Каждый файл имеет формат, указанный ниже.

input_file_ format = "AC_XXXXXX.abc"

Для первого шага требовалось построить какие-то индексы для всех входных файлов, это было сделано с помощью инструмента build-indexкоманда и теперь каждый файл имеет 6 индексов, связанных с ним.Поэтому сейчас у меня около 1200 * 6 = 7200 индексных файлов.Индексы имеют форму, приведенную ниже.

indexes_format = "AC_XXXXXX.abc.1",
"AC_XXXXXX.abc.2",
"AC_XXXXXX.abc.3",
"AC_XXXXXX.abc.4",
" AC_XXXXXX.abc.rev.1 ",
" AC_XXXXXX.abc.rev.1 "

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

signal-processing-tool ..\path-to-indexes\AC_XXXXXX.abc ..\Query file

, где AC_XXXXXX.abc - индекс, связанный с этимконкретный индексный файл.Все 6 индексных файлов вызываются с помощью ** AC_XXXXXX.abc *.

Моя проблема в том, что мне нужно использовать только первые 14 символов имен файлов индекса для заключительной операции.

Когда я использую код ниже, выравнивание не выполняется.for file in indexes/*; do ./tool $file|cut -b1-14 Project/query_file; done

Буду признателен за помощь в этом!

1 Ответ

2 голосов
/ 06 марта 2012

Прежде всего, имейте в виду, что $ file всегда будет начинаться с «indexes /», поэтому обрезка первых 14 символов всегда будет включать это имя папки в начале.

Чтобы использовать первые 14 символов впеременная, используйте ${file:0:14}, где 0 - начальный индекс строки, а 14 - длина искомой подстроки.

В качестве альтернативы, если вы хотите использовать cut, вам нужно запустить его в подоболочке: for file in indexes/*; do ./tool $(echo $file|cut -c 1-14) Project/query_file; done Я изменил аргумент для cut на -c для символов вместо байтов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...