使用shell从列表中删除文件

时间:2015-01-20 04:32:05

标签: shell applescript

我是Applescript& amp;的初学者Shell和我正在写一个脚本,在某一点上要求我删除.txt文件中列出的文件。我已经在stackoverflow上进行了大量搜索,并且能够在我的Applescript中运行以下命令...

do shell script "while read name; do
    rm -r \"$name"\
done < ~Documents/Script\\ Test/filelist.txt"

它似乎识别并读取了该文件,但是我收到了一个错误,说明了这一点,我无法弄清楚原因:

  

错误“rm:〜/ Documents / Script Test / filetodelete.rtf:没有这样的文件或目录”编号1

也就是说,我可以导航到那个确切的目录,并验证具有该扩展名的文件确实存在。有人可以帮助解释为什么会出现这种错误吗?

1 个答案:

答案 0 :(得分:0)

你有一个错字。该文件的路径很可能是~/Documents,而不是~Documents(在Bash中,它将是帐户名为Documents的用户的主目录)。

如果你的shell不是Bash,它可能甚至不支持~的{​​{1}}。

在数据文件中,您也无法使用$HOME来引用您的主目录。你可以用一个简单的替换来扩充循环来支持这个:

~

另请注意使用while read -r file; do case $file in '~'*) file=$HOME${file#\~};; esac rm -r "$file" done < ~/"Documents/Script Test/filelist.txt" 来避免read -r的旧版默认行为出现一些令人讨厌的问题。