Filename manipulation in cygwin

…衆ロ難τιáo~ 提交于 2019-12-11 12:26:49

问题


I am running cygwin on Windows 7. I am using a signal processing tool and basically performing alignments. I had about 1200 input files. Each file is of the format given below.

input_file_ format = "AC_XXXXXX.abc"

The first step required building some kind of indexes for all the input files, this was done with the tool's build-index command and now each file had 6 indexes associated with it. Therefore now I have about 1200*6 = 7200 index files. The indexes are of the form given below.

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"

Now, I need to use these indexes to perform the alignment. All the 6 indexes of each file are called together and the final operation is done as follows.

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

Where AC_XXXXXX.abc is the index associated with that particular index file. All 6 index files are called with **AC_XXXXXX.abc*.

My problem is that I need to use only the first 14 characters of the index file names for the final operation.

When I use the code below, the alignment is not executed. for file in indexes/*; do ./tool $file|cut -b1-14 Project/query_file; done

I'd appreciate help with this!


回答1:


First of all, keep in mind that $file will always start with "indexes/", so trimming first 14 characters would always include that folder name in the beginning.

To use first 14 characters in a variable, use ${file:0:14}, where 0 is the starting string index, and 14 is the length of the desired substring.

Alternatively, if you want to use cut, you need to run it in a subshell: for file in indexes/*; do ./tool $(echo $file|cut -c 1-14) Project/query_file; done I changed the arg for cut to -c for characters instead of bytes



来源:https://stackoverflow.com/questions/9573953/filename-manipulation-in-cygwin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!