[root@localhost ~]# ls *.bak
test2.bak test3.bak test9.bak test.bak test.txt.bak
如何删除.bak
所有文件中的所有内容?这是我当前的尝试
ls *.bak|xargs -t -i mv {}.bak {}
但这对我不起作用。这里有什么解决方法吗?
答案1
循环应该执行以下操作(在类似 POSIX 的 shell 中):
for f in *.bak; do
mv -- "$f" "${f%.*}"
done
一行:
for f in *.bak; do mv -- "$f" "${f%.*}"; done
答案2
使用rename
命令:
rename 's/\.bak$//' *.bak
's/\.bak$//'
-珀尔表达式匹配以结尾的所有文件名.bak
并去除扩展名
答案3
应该适用于所有平台的东西:
for i in *.bak
do
mv $i `echo $i | sed 's/\.bak$//'`
done
答案4
#!/bin/bash
for val in \`ls *.bat`
do
mv $val `echo $val | cut -f1 -d'.'`
done