重命名目录中特定类型的所有文件
rename all files of a specific type in a directory
我正在尝试使用 bash
重命名目录中匹配特定模式的所有 .txt
文件。我在下面的两次尝试都从目录中删除了文件并引发了错误。谢谢:)
输入
16-0000_File-A_variant_strandbias_readcount.vcf.hg19_multianno_dbremoved_removed_final_index_inheritence_import.txt
16-0002_File-B_variant_strandbias_readcount.vcf.hg19_multianno_dbremoved_removed_final_index_inheritence_import.txt
期望输出
16-0000_File-A_multianno.txt
16-0002_File-B_multianno.txt
Bash 尝试 1 this removes the files from the directory
for f in /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt ; do
# Grab file prefix.
p=${f%%_*_}
bname=`basename $f`
pref=${bname%%.txt}
mv "$f" ${p}_multianno.txt
done
Bash 尝试 2 Substitution replacement not terminated at (eval 1) line 1.
for f in /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt ; do
# Grab file prefix.
p=${f%%_*_}
bname=`basename $f`
pref=${bname%%.txt}
rename -n 's/^$f/' *${p}_multianno.txt
done
你不需要循环。 rename
一个人就能做到:
rename -n 's/(.*?_[^_]+).*/_multianno.txt/g' /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt
正则表达式的意思大致是,
捕获从开始到第二个 _
的所有内容,
匹配其余的,
并替换为捕获的前缀并附加 _multianno.txt
使用 -n
标志,此命令将打印其将执行的操作,而无需实际执行。
当输出看起来不错时,删除 -n
并重新运行。
我正在尝试使用 bash
重命名目录中匹配特定模式的所有 .txt
文件。我在下面的两次尝试都从目录中删除了文件并引发了错误。谢谢:)
输入
16-0000_File-A_variant_strandbias_readcount.vcf.hg19_multianno_dbremoved_removed_final_index_inheritence_import.txt
16-0002_File-B_variant_strandbias_readcount.vcf.hg19_multianno_dbremoved_removed_final_index_inheritence_import.txt
期望输出
16-0000_File-A_multianno.txt
16-0002_File-B_multianno.txt
Bash 尝试 1 this removes the files from the directory
for f in /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt ; do
# Grab file prefix.
p=${f%%_*_}
bname=`basename $f`
pref=${bname%%.txt}
mv "$f" ${p}_multianno.txt
done
Bash 尝试 2 Substitution replacement not terminated at (eval 1) line 1.
for f in /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt ; do
# Grab file prefix.
p=${f%%_*_}
bname=`basename $f`
pref=${bname%%.txt}
rename -n 's/^$f/' *${p}_multianno.txt
done
你不需要循环。 rename
一个人就能做到:
rename -n 's/(.*?_[^_]+).*/_multianno.txt/g' /home/cmccabe/Desktop/test/vcf/overall/annovar/*_classify.txt
正则表达式的意思大致是,
捕获从开始到第二个 _
的所有内容,
匹配其余的,
并替换为捕获的前缀并附加 _multianno.txt
使用 -n
标志,此命令将打印其将执行的操作,而无需实际执行。
当输出看起来不错时,删除 -n
并重新运行。