![通过终端删除已被另一个命令选择的带有特殊字符的文件](https://linux22.com/image/1517222/%E9%80%9A%E8%BF%87%E7%BB%88%E7%AB%AF%E5%88%A0%E9%99%A4%E5%B7%B2%E8%A2%AB%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E9%80%89%E6%8B%A9%E7%9A%84%E5%B8%A6%E6%9C%89%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E7%9A%84%E6%96%87%E4%BB%B6.png)
这是我的第一篇帖子,所以请慢慢来 :)
我正在创建一个 AppleScript,它运行 bash 命令来选择并删除指定文件夹组中最近修改的文件。文件名每次都会不同。
我见过如何在知道实际文件名的情况下删除带有特殊字符的文件,但在我的例子中,文件名是由 ls 发现的。遗憾的是,当我使用 rm 删除文件时,一切都乱了套,无法识别文件,因为文件名称中有问号和空格。有没有办法在变量外面添加引号,以便可以正确寻址?或者有更好的方法。我甚至不知道如何重命名文件。另外,我只想更改/删除一个文件,我无法重命名文件夹中的所有文件。
以下是其中一个文件名的示例。?+61 434 570 460? 于 2016-12-22 15.01.27.ichat
下面是我尝试运行的代码;rm -fr $(ls -t | head -n1)
谢谢大家的意见 :)
答案1
我最终解决了这个问题,我必须将引号放在引号中,即在命令中添加引号。
这是删除最新文件的有效命令,无论名称中是否有特殊字符或空格。
rm -f """$(ls -t | tail -1)"""
干杯。