2013-10-07 2 views
0

Я пытаюсь использовать некоторые скрипты Bash, и любая помощь будет оценена.Bash, найти и удалить, сохраняя каталог

Сценарий должен найти всех пользователей пользователей в/Users/и удалить все внутри. Фильмы, документы, рабочий стол и музыка.

В то же время сохраняя каталог, по существу опустошающий его. Также исключая пользовательские файлы ladmin, shared и Guest.

Когда я выполняю. Он не пуст файлы, хотя я получаю обратную связь, которую я ожидал бы. Я что-то пропустил здесь?

DIR_CD=/Users/ 

cd $DIR_CD 

find . -type d ! -name "*ladmin*" ! -name "*Guest*" ! -name "*Shared*" \ 
     -maxdepth 1 -print -exec rm -rf {}/Desktop/* \; 
find . -type d ! -name "*ladmin*" ! -name "*Guest*" ! -name "*Shared*" \ 
     -maxdepth 1 -print -exec rm -rf {}/Documents/* \; 
find . -type d ! -name "*ladmin*" ! -name "*Guest*" ! -name "*Shared*" \ 
     -maxdepth 1 -print -exec rm -rf {}/Movies/* \; 
find . -type d ! -name "*ladmin*" ! -name "*Guest*" ! -name "*Shared*" \ 
     -maxdepth 1 -print -exec rm -rf {}/Music/* \; 
+2

Это не похоже на хороший начинающий проект. Надеюсь, вы тестируете чужую систему! – beroe

+0

проверить xargs. –

+0

Предполагается, что в/Пользователи, которые хорошо смотрятся, предполагают, что ladmin, Guest и Shared. Любые ошибки? Вы бегали с sudo? –

ответ

0

Нравится?

for d in /Users/*; do 
    case ${d#*/} in ladmin | Guest | Shared) continue ;; esac 
    rm -rf "$d"/Desktop/* "$d"/Documents/* "$d"/Movies/* "$d"/Music/* 
done 

С Bash extended globbing вы могли бы сделать все это с помощью одного подстановочных выражений.

+0

Нет, это удаляет все, что связано с ladmin shared и Guest. –

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