尝试删除 rm 名称中包含 ( 的文件

尝试删除 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?=

我得到的错误是:

bash: syntax error near unexpected token `(‘

我试图逃避(通过:

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?=

但似乎将文件分成: 在此输入图像描述 我也尝试过:

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?=

谢谢你的帮助

答案1

单引号名称。这是必需的,因为名称不仅包含(空格和其他字符,如果不加引号,这些字符将由 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?='

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

rm -i ~olb/Email*COV*guidance_for_the_charity_sector*

请注意,您需要确保这仅与您有兴趣删除的一个文件匹配。您可以通过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

相关内容