我在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/