这里有点像 Linux 新手用户。
我想删除列表中包含的多个文件。这些文件的名称中可能包含空格。我可以创建一个类似这样的文件:
rm -f "01. Song1.mp3"
rm -f "02. Song2.mp3"
等等。我使用 sed 将“rm -f”和“”字符添加到每行的末尾。
现在我执行该列表时,它却不工作了。实际上什么都没被删除。
另外,当我使用 ls 列出文件时,带有空格的文件以 ' 开头,其他文件以 " 开头
我认为这是问题的一部分。
答案1
当您运行时rm -f "01. Song1.mp3"
,rm
会收到 2 个带有值-f
且01. Song1.mp3
没有任何引号的参数。因此显然rm
找不到所需的文件。引号仅用于 shell 进行特殊字符串处理。如果您想将引号传递给命令,则需要正确转义它
rm -f '"01. Song1.mp3"'
rm -f '"02. Song2.mp3"'
或者
rm -f "\"01. Song1.mp3\""
rm -f \""02. Song2.mp3\""
或者更好的是让 shell 扩展真实名称
rm -f *01.*.mp3
rm -f *02.*.mp3
您也可以直接输入rm -f \"
或rm -f '"
然后按,Tab这样 shell 就会自动完成文件名并进行正确的转义。您应该避免逐字输入名称