Bash 具有错误名称且带有括号的mv命令

Bash 具有错误名称且带有括号的mv命令,bash,shell,mv,Bash,Shell,Mv,我正在重命名一批文件,但忘记了文件扩展名。尝试使用以下命令将其添加回,但文件消失 for i in S02*; do mv "$i" "$(i).mkv";done Bash给出了错误:“i:command-notfound”。我猜我不应该把括号包括在内。知道我现在在哪里可以找到我的文件吗 谢谢 您的文件已丢失,除非进行备份,否则可能无法恢复。您应该使用大括号{},而不是括号(): $()用于命令替换。由于i不是命令,因此您得到的错误是正确的。但是,该命令被替换为空,因此所有文件都被删除 这就

我正在重命名一批文件,但忘记了文件扩展名。尝试使用以下命令将其添加回,但文件消失

for i in S02*; do mv "$i" "$(i).mkv";done
Bash给出了错误:“i:command-notfound”。我猜我不应该把括号包括在内。知道我现在在哪里可以找到我的文件吗


谢谢

您的文件已丢失,除非进行备份,否则可能无法恢复。您应该使用大括号
{}
,而不是括号
()


$()
用于命令替换。由于
i
不是命令,因此您得到的错误是正确的。但是,该命令被替换为空,因此所有文件都被删除

这就是为什么我通过构造和回显命令来执行大多数批处理工作,然后如果我喜欢所看到的内容,则通过shell将结果管道化(
do echo mv等
,然后在工作时添加一个
| sh-x
),并不是所有的文件都消失了:S02*文件集中的最后一个文件现在命名为“.mkv”。试试:“ls-l.mkv”。我知道,如果所有其他S02*文件都不见了,这是一个小小的安慰!
for i in S02*; do mv "$i" "${i}.mkv";done