试图删除 rm 名称中带有 ( 的文件

ob3*_*318 0 bash rm

在 pythonanywhere 的 bash 中,我试图删除该文件:

rm /home/olb/Email Thu, 19 Mar 2020 18:49:16 +0000 =?UTF-8?Q?Update_from_GOV.UK_=E2=80=93_Coronavirus_(COV?= =?UTF-8?Q?ID-19)_guidance_for_the_charity_sector?=
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

bash: syntax error near unexpected token `(‘
Run Code Online (Sandbox Code Playgroud)

我试图逃避(通过:

rm /home/olb/Email Thu, 19 Mar 2020 18:49:16 +0000 =?UTF-8?Q?Update_from_GOV.UK_=E2=80=93_Coronavirus_\(COV?= =?UTF-8?Q?ID-19\)_guidance_for_the_charity_sector?=
Run Code Online (Sandbox Code Playgroud)

但似乎将文件拆分为: 在此处输入图片说明 我也试过:

rm /home/olb/ \Email Thu, 19 Mar 2020 18:49:16 +0000 =?UTF-8?Q?Update_from_GOV.UK_=E2=80=93_Coronavirus_\(COV?= =?UTF-8?Q?ID-19\)_guidance_for_the_charity_sector?=
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Kus*_*nda 13

单引号名称。这是必需的,因为名称不仅包含(空格和其他字符,如果不加引号,shell 会解释这些字符。shell 会在未加引号的空格上拆分名称,并将每个生成的单词视为要删除的单独文件名模式(您在收到的错误消息中看到了这一点),并且这些?字符是通配符,可能与现有的单个字符匹配文件名(不太可能,但仍然)。

rm -i ~olb/'Email Thu, 19 Mar 2020 18:49:16 +0000 =?UTF-8?Q?Update_from_GOV.UK_=E2=80=93_Coronavirus_(COV?= =?UTF-8?Q?ID-19)_guidance_for_the_charity_sector?='
Run Code Online (Sandbox Code Playgroud)

或者,使用与文件名唯一匹配的文件名通配模式,

rm -i ~olb/Email*COV*guidance_for_the_charity_sector*
Run Code Online (Sandbox Code Playgroud)

请注意,您需要确保这仅与您有兴趣删除的一个文件匹配。您可以通过用或替换rm上面的命令来检查这一点,并检查修改后的命令的结果。printf '%s\n'echo

我还使用rm -i这里为您提供每次删除的交互式提示。

您可以使用相同的方法将文件重命名为更合理的名称:

mv -i ~olb/Email*COV*guidance_for_the_charity_sector* /home/olb/COV_guidance_for_the_charity_sector.txt
Run Code Online (Sandbox Code Playgroud)

  • 选项卡完成还应该在 Bash 中正确引用文件名。它可用于检查 glob 模式是否只匹配一个文件 (18认同)