用shell命令怎样批量删除文件的后缀名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用shell命令怎样批量删除文件的后缀名相关的知识,希望对你有一定的参考价值。
有个前提是需要处理的文件不在同一个文件夹,在各个子文件夹中
find . -name "*.txt" -exec mv .bak \;
这样可以给所有txt文件后面添加后缀,把*.txt变成*.txt.bak,怎样才能去掉后缀,把*.txt直接变成*呢
1)要代码简洁、写成一行的话,可以考虑这样:
find . -name "*.txt" | awk 'new=gensub(".txt","",1);system("mv "$0" "new)'用awk处理,gensub函数将.txt后缀替换为空并返回替换后的字串赋值给变量new,最后借用system调用执行mv命令更名文件。
2)要思路简单易于理解的话,可以这样:
for file in `find . -name "*.txt"`do
mv $file $file%.*
done
$file%.* 是bash中字符串处理“掐头去尾法”中的去尾法。
用basename命令
for i in `find . -name "*.txt"`do
mv $i `basename $i txt`bak
done 参考技术B
假设你要去掉的是 .txt 后缀
rename ".txt" "" *这个是把当前目录下所有文件名中含.txt的,将第一个遇见的.txt去掉。
妥善实验后使用。因为此命令会直接对你文件名进行操作。
以上是关于用shell命令怎样批量删除文件的后缀名的主要内容,如果未能解决你的问题,请参考以下文章