我在Windows7上使用cygwin。我想遍历一个包含大约10000个文件的文件夹,并对每个文件执行信号处理工具的操作。问题是文件名中有一些多余的字符与操作不兼容。因此,我只需要提取文件名的某一部分。
例如,如果文件名是abc123456_justlike.txt.rna我需要使用abc123456_justlike.txt。如何编写循环以遍历每个文件并对缩短的文件名执行操作?
我尝试了cut - b1-10命令,但这不允许我的工具执行必要的操作。我很感激你帮我解决这个问题

最佳答案

尝试一些shell脚本,使用${name%tail}参数替换:变量name的内容将展开,但与tail glob模式匹配的任何后缀材料都将被截断。

$ NAME=abc12345.txt.rna
$ echo ${NAME%.rna}  #

# process all files in the directory, taking off their .rna suffix
$ for x in *; do signal_processing_tool ${x%.rna} ; done

如果文件名之间存在差异,可以使用大小写对其进行分类:
for x in * ; do
  case $x in
     *.rna )
        # do something with .rna files
        ;;
     *.txt )
        # do something else with .txt files
        ;;
     * )
        # default catch-all-else case
        ;;
  esac
done

关于linux - 在Unix中提取子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9573121/

10-13 05:35