删除前导数字和空格的多个文件名

时间:2011-02-02 17:28:43

标签: bash scripting

在bash中。因此001 file.ext变为file.ext。我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用两个seds表达式。第一个删除最后一个空格中的所有内容,第二个删除前导数字。

$ echo "001 fiile.ext" | sed -e 's/^.* //' -e 's/^[0-9]*//g'
fiile.ext

答案 1 :(得分:1)

for f in *file.ext
do
    newname=$(echo "$f" | sed 's/^[0-9 ]*//')
    mv "$f" "$newname"
done

或纯粹的Bash:

shopt -s extglob
for f in *file.ext
do
    mv "$f" "${f##+([0-9 ])}"
done

答案 2 :(得分:0)

如果您只想转换文件名(如脚本中的变量),您可以执行以下操作:

[[ $FILENAME =~ ^[0-9\s]+(.+) ]] && FILENAME="${BASH_REMATCH[1]}"

如果您尝试在文件系统上实际重命名文件名,则更合适

for F in *.ext; do
  [[ $F =~ ^[0-9\s]+(.+) ]] && mv "$F" "${BASH_REMATCH[1]}"
done