2015-01-20 4 views
0

Я начинаю с Applescript & Shell и я пишу скрипт, который в определенный момент требует от меня удаления файлов, перечисленных в файле .txt. Я искал обширно на StackOverflow и был в состоянии придумать с помощью следующей команды, что я бегу из моей Applescript ...Удаление файлов из списка с помощью оболочки

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

кажется распознавать и читать файл, но я получаю сообщение об ошибке, что говорит это, и я не могу понять, почему:

ошибка "гт: ~/Documents/Test Script/filetodelete.rtf: нет такого файла или каталога" номер 1

То есть, я могу перейти к этот точный каталог и убедитесь, что файл с этим именем е с этим расширением действительно существует. Может кто-то помочь пролить свет на то, почему эта ошибка может произойти?

ответ

0

У вас есть опечатка. Путь к файлу, скорее всего, ~/Documents, а не ~Documents (который в Bash будет домашним каталогом пользователя с именем учетной записи Documents).

Если ваша оболочка не является Bash, она может даже не поддерживать ~ для $HOME.

В файле данных вы также не можете использовать ~ для ссылки на ваш домашний каталог. Вы можете увеличить цикл с простой заменой для поддержки этого:

while read -r file; do 
    case $file in '~'*) file=$HOME${file#\~};; esac 
    rm -r "$file" 
done < ~/"Documents/Script Test/filelist.txt" 

Обратите также внимание на использование read -r, чтобы избежать некоторых досадных проблем с поведением read наследство по умолчанию.

+0

Благодарим вас, вы верны опечатке. Я изменил ошибку, так как она говорит «rm: ~/Documents ..» и т. Д. Я пробовал ваши варианты с помощью xargs -a, но я получаю сообщение об ошибке, которое говорит, что ошибка синтаксиса «» не может идти после этого идентификатора, и это выделяет часть между -a и «$ – EveryCrime

+0

Я обновил ответ. Предложение 'xargs' было удалено из-за вашей другой проблемы, связанной с тильдой, что сделало ее непригодной. Обновите. Благодарю. – tripleee

+0

Эй, большое спасибо за обновление! Я набрал этот код в редактор applescript. Ошибка, которую я получаю, говорит, что «пока» не может быть здесь. – EveryCrime

Смежные вопросы