gpt4 book ai didi

linux - Bash 重命名文件脚本不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:21 24 4
gpt4 key购买 nike

我有以下脚本,但由于某种原因它不起作用

find . -name '*---*' | while read fname3 

do
new_fname3=`echo $fname3 | tr "---" "-"`

if [ -e $new_fname3 ]
then
echo "File $new_fname3 already exists. Not replacing $fname3"
else
echo "Creating new file $new_fname3 to replace $fname3"
mv "$fname3" $new_fname3
fi

done

但是如果我使用

find . -name '*---*' | while read fname3 

do
new_fname3=`echo $fname3 | tr "-" "_"`

if [ -e $new_fname3 ]
then
echo "File $new_fname3 already exists. Not replacing $fname3"
else
echo "Creating new file $new_fname3 to replace $fname3"
mv "$fname3" $new_fname3
fi

done

脚本可以工作,但我最终得到了 3 个下划线“_”,如何用一个破折号替换 3 个破折号“---”?

谢谢

最佳答案

看看man trtr 将仅替换单个字符。

使用类似 perl -wpe "s/---/-/" 的内容。

另请参阅man 1p rename。它所做的几乎正是您想要的:

rename 's/---/-/' *---*

关于linux - Bash 重命名文件脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com