我试图将某些文件重命名为另一个扩展名:

# mv  *.sqlite3_done *.sqlite3

但出现错误:
mv: target '*.sqlite3' is not a directory

为什么?

最佳答案

通配符扩展导致将多个名称传递给命令。 Shell认为您正在尝试将多个文件移动到*.sqlite3目录。

您需要使用一个循环:

for nam in *sqlite3_done
do
    newname=${nam%_done}
    mv $nam $newname
done
%_done表示要从字符串中删除最后一次出现的_done

如果文件名中可能有空格,则需要引用文件名。

07-24 12:39