重命名倍数与一个bash循环文件 [英] Renaming multiples files with a bash loop
本文介绍了重命名倍数与一个bash循环文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要重新命名45文件,而我并不想这样做,一个接一个。这些文件名:
I need to rename 45 files, and I don't want to do it one by one. These are the file names:
chr10.fasta chr13_random.fasta chr17.fasta chr1.fasta chr22_random.fasta chr4_random.fasta chr7_random.fasta chrX.fasta
chr10_random.fasta chr14.fasta chr17_random.fasta chr1_random.fasta chr2.fasta chr5.fasta chr8.fasta chrX_random.fasta
chr11.fasta chr15.fasta chr18.fasta chr20.fasta chr2_random.fasta chr5_random.fasta chr8_random.fasta chrY.fasta
chr11_random.fasta chr15_random.fasta chr18_random.fasta chr21.fasta chr3.fasta chr6.fasta chr9.fasta
chr12.fasta chr16.fasta chr19.fasta chr21_random.fasta chr3_random.fasta chr6_random.fasta chr9_random.fasta
chr13.fasta chr16_random.fasta chr19_random.fasta chr22.fasta chr4.fasta chr7.fasta chrM.fasta
我需要更改扩展名.fasta到.fa。我试图写一个bash脚本来做到这一点:
I need to change the extension ".fasta" to ".fa". I'm trying to write a bash script to do it:
for i in $(ls chr*)
do
NEWNAME = `echo $i | sed 's/sta//g'`
mv $i $NEWNAME
done
但它不工作。你能告诉我为什么,或给另一个快速的解决方案?
But it doesn't work. Can you tell me why, or give another quick solution?
谢谢!
推荐答案
下面几个误区:
-
NEWNAME =
应该没有空间。这里的bash正在寻找一个名为命令NEWNAME
和失败。 - 您解析LS的输出。这是不好的,如果你有带空格的文件。 Bash可以建立自己的水珠运营文件
*
。 列表 - 您不要逃避
$ I
和$ NEWNAME
。如果其中包含空格它使两个参数的MV。 - 如果一个文件名以破折号开头
MV
会认为这是一个开关。使用-
停止参数处理
NEWNAME =
should be without space. Here bash is looking for a command namedNEWNAME
and that fails.- you parse the output of ls. this is bad if you had files with spaces. Bash can build itself a list of files with the glob operator
*
. - You don't escape
"$i"
and"$NEWNAME"
. If any of them contains a space it makes two arguments for mv. - If a file name begins with a dash
mv
will believe it is a switch. Use--
to stop argument processing.
尝试:
for i in chr*
do
mv -- "$i" "${i/%.fasta/.fa}"
done
或
for i in chr*
do
NEWNAME="${i/%.fasta/.fa}"
mv -- "$i" "$NEWNAME"
done
的%{VAR /%PAT /换货}
查找拍
的只在变量的结束的并用替换
。
这篇关于重命名倍数与一个bash循环文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文