我试图将某些文件重命名为另一个扩展名:
# 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
。如果文件名中可能有空格,则需要引用文件名。