【问题标题】:Filename manipulation in cygwincygwin中的文件名操作
【发布时间】:2012-03-23 08:32:48
【问题描述】:

我在 Windows 7 上运行 cygwin。我正在使用信号处理工具并基本上执行对齐。我有大约 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

非常感谢您的帮助!

【问题讨论】:

  • 假设您的示例行中未执行的./tool 是信号处理工具,看起来您正在通过cut <etc> 管道运行该工具的输出 - 您没有切割文件名。
  • 没错,我不是在编辑文件名,而是在编辑输出。我该如何解决这个问题?

标签: string unix cygwin filenames


【解决方案1】:

首先,请记住 $file 将始终以“indexes/”开头,因此修剪前 14 个字符将始终在开头包含该文件夹名称。

要在变量中使用前 14 个字符,请使用 ${file:0:14},其中 0 是起始字符串索引,14 是所需子字符串的长度。

或者,如果你想使用 cut,你需要在子 shell 中运行它:for file in indexes/*; do ./tool $(echo $file|cut -c 1-14) Project/query_file; done 我将 cut 的 arg 更改为 -c 用于字符而不是字节

【讨论】:

  • 谢谢,我使用了${file:0:14} 选项,我认为它可以解决问题!
猜你喜欢
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 2014-09-09
  • 2012-08-15
  • 1970-01-01
相关资源
最近更新 更多