尝试移动文件时,意外标记‘(’附近出现语法错误

尝试移动文件时,意外标记‘(’附近出现语法错误

因此我尝试按照此线程中的解决方案进行操作:CMD 命令为每个文件创建文件夹并将文件移动到文件夹中因为我想做和该帖子的 OP 想做的事情一样。

在找到该线程之前我已经手动创建了文件夹。

但是,当我尝试for %i in (*) do move "%i" "%~ni"将每个文件放入其各自的文件夹时,出现以下错误:

bash: syntax error near unexpected token `('

我的文件名称如下:x01.sql、x02.sql、x03.sql...文件夹名称分别为 x01、x02、x03 等等。它们的名称中没有空格、特殊字符或非 ASCII 字符。我使用的是 GNU bash 版本 5.0.7(1)。

我该如何解决错误并使文件分别移动到各自的文件夹中?

答案1

GNU Bash 和 Windows CMD 是不同的实体。这 CMD 命令为每个文件创建文件夹并将文件移动到文件夹中适用于 Windows CMD。

对于 GNU Bash,你可以关注

答案2

看起来您正在尝试在 GNU bash 中运行 Windows 批处理命令。这就是它不起作用的原因。正如“Saurabh P Bhandari”所建议的,使用此链接中的以下片段, https://unix.stackexchange.com/questions/219991/how-do-i-create-a-directory-for-every-file-in-a-parent-directory 确保您首先进入父文件夹。

for x in ./*.txt; do
  mkdir "${x%.*}" && mv "$x" "${x%.*}"
done

相关内容