linux将以0开头的文件重命名,linux – (Bash)重命名文件扩展名

for name in /hw1/textarchive/*.pro; do

newname=${name%.pro}.txt

echo mv "$name" "$newname"

done

或更短,

for name in /hw1/textarchive/*.pro; do

echo mv "$name" "${name%.pro}.txt"

done

(当你确定正在做正确的事情时,删除回声)

这将遍历/ hw1 / textarchive下的所有.pro文件,并将它们重命名为.txt文件. ${name%.pro}替换将从$name中的名称末尾删除.pro扩展名.

如果要重命名所有文件:

for name in /hw1/textarchive/*; do

echo mv "$name" "${name%.*}.txt"

done

${name%.*}将删除名称末尾的任何扩展名.现有的.txt文件也将被处理,但不会更改其名称.没有扩展名的文件将获得新的.txt扩展名.这也将获取非文件的名称(如目录),因此以下更改将跳过这些:

for name in /hw1/textarchive/*; do

test -f "$name" || continue

echo mv "$name" "${name%.*}.txt"

done

谨慎的做法是确保不存在具有新名称的目录条目:

for name in /hw1/textarchive/*; do

test -f "$name" || continue

test -e "${name%.*}.txt" && continue

echo mv "$name" "${name%.*}.txt"

done

在另一个等效形式:

for name in /hw1/textarchive/*; do

if [ -f "$name" ] && [ ! -e "${name%.*}.txt" ]; then

echo mv "$name" "${name%.*}.txt"

fi

done

-f test测试给定常规文件的存在. -e测试测试给定名称的存在(无论它的名称是什么).

此解决方案不需要bash(只是sh兼容的shell).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值