Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用bash脚本批量替换文件名前缀?_Bash - Fatal编程技术网

如何用bash脚本批量替换文件名前缀?

如何用bash脚本批量替换文件名前缀?,bash,Bash,到目前为止,我所做的是附加它 #!/bin/bash for f in * do mv "$f" "File${f##/}" done 文件名由3个随机字母和3个数字组成。我需要用“文件”替换这3个字母 然后你需要去掉这三个字母 "File${f#???}" 然后你需要去掉这三个字母 "File${f#???}" 您可以使用: newName=`echo $f | sed 's/^[a-z]\{3\}/File/'` mv $f $newName 您可以使用: newName=`ech

到目前为止,我所做的是附加它

#!/bin/bash
for f in *
do 
mv "$f" "File${f##/}"
done

文件名由3个随机字母和3个数字组成。我需要用“文件”替换这3个字母

然后你需要去掉这三个字母

"File${f#???}"

然后你需要去掉这三个字母

"File${f#???}"
您可以使用:

newName=`echo $f | sed 's/^[a-z]\{3\}/File/'`
mv $f $newName
您可以使用:

newName=`echo $f | sed 's/^[a-z]\{3\}/File/'`
mv $f $newName
明白了

显然,我不应该评论说谢谢,所以我只在这里加上它。谢谢,我将使用Ignacio的方法。

明白了

#!/bin/bash
for f in *
do 
newName=File"$(echo "$f" | cut -c4-)"
mv "$f" "$newName"
done
显然,我不应该评论说谢谢,所以我只在这里加上它。谢谢,我将使用Ignacio的方法。

“$(echo“$f”| cut-c4-”
对于Bash来说太复杂了。看看Ignacio的答案。
“$(echo“$f”| cut-c4-”
对于Bash来说太复杂了。请看Ignacio的回答。我的标准意见是:对于任何像这样的批量移动/重命名,请始终使用
mv-n
mv-i
,以防止文件在名称冲突、bug、,等。我的标准意见:请始终使用
mv-n
mv-i
进行任何此类批量移动/重命名,以防止文件在名称冲突、错误等情况下被静默和不可逆转地覆盖。