Следующие две команды оболочки добьются цели:
mkdir -p /var/lib/mysql/tmp/ # create directories (that don't exist, yet)
rm -rf /var/lib/mysql/tmp/* # delete all files and sub-directories
Примечание: Вы, возможно, должны предварительно ожидать каждую строку с sudo
позволять Вашему сценарию Ruby выполнить команды оболочки с полномочиями пользователя root. Однако это может быть хитро для установки sudo правильно.
-p опция к mkdir к избавляет от необходимости тестировать существование на каталог:
-p Create intermediate directories as required. If this option is not specified, the full path prefix of each operand must already exist. On the other hand, with this option specified, no error will be reported if a directory given as an operand already exists. Intermediate directories are created with permission bits of ``rwxrwxrwx'' (0777) as modified by the current umask, plus write and search permission for the owner.
Из комментария OP:
Хорошо, я нашел обходное решение: Монтирование удаленных окон совместно использует папку к локальному каталогу и затем выполнению "комнаты-r" Благодаря Mikhail, который дал подсказку здесь – rahimi 2 дня назад
С этим на вопрос эффективно отвечают (и, как побочный эффект, удаленный из Оставшейся без ответа очереди Вопросов).
Вы можете написать несколько строк:
myHost=fubar
myShare=batch
myRootPath="next_version\\SNAPSHOT"
myDirectory="snafu-fubar"
myCredentials="sbb.ch\\ricky%password"
smbclient \\\\${myHost}\\${myShare} -D "${myRootPath}" -U ${myCredentials} -c "recurse on; ls ${myDirectory}" | grep '^\\' \
| awk -F\\ '{print NF,$0}' | sort -nr | cut -d ' ' -f2- \
| while read -r myDir; do
myRoot="${myDir%\\*}"
myFolder="${myDir##*\\}"
smbclient \\\\${myHost}\\${myShare} -D "${myDir}" -U ${myCredentials} -c "del *" || true
smbclient \\\\${myHost}\\${myShare} -D "${myRoot}" -U ${myCredentials} -c "rmdir \"${myFolder}\"" || true
done
Немного поздно, но начиная с версии 4.7.0 smbclient появилась команда deltree, которая может это сделать. Он удалит все файлы и каталоги, соответствующие маске, из текущего рабочего каталога на сервере. Не нужно включать рекурсию
smb: \> deltree <mask>
smbclient
инструмент плохо разработан и определенно не может сделать, это... экономит некоторое время, по крайней мере. Во многих случаях монтирование доли самбы не является практическим решением, таким образом, существует огромный стимул знать лиsmbclient
может сделать эту вещь. – 19.02.2016, 11:18