我有一个看起来像这样的文件结构:

A/
    2098765.1ext
    2098765.2ext
    2098765.3ext
    2098765.4ext
      12345.1ext
      12345.2ext
      12345.3ext
      12345.4ext

B/
    2056789.1ext
    2056789.2ext
    2056789.3ext
    2056789.4ext
      54321.1ext
      54321.2ext
      54321.3ext
      54321.4ext

我需要重命名以20开头的所有文件,以10开头;即我需要将B/2022222.1ext重命名为B/1022222.1ext
我已经看到许多其他有关重命名多个文件的问题,但似乎无法使其适用于我的情况。只是为了看看我是否能弄清楚自己在做什么,然后才真正尝试进行已经完成的复制/重新命名:
for file in "*/20?????.*"; do
    echo "{$file/20/10}";
done

但我得到的只是
{*/20?????.*/20/10}

有人可以告诉我该怎么做吗?

最佳答案

您只是有一点不正确的语法而已:

for file in */20?????.*; do mv $file ${file/20/10}; done
  • in的参数中删除引号。否则,不会发生文件名扩展。
  • 替换中的$应该放在方括号
  • 之前

    10-04 13:18