Unix Bash,查找并删除,同时保留目录

Unix Bash,查找并删除,同时保留目录,unix,Unix,我正在尝试一些Bash脚本,任何帮助都将不胜感激 脚本应该在/users/中查找所有用户,并删除其中的所有内容。电影、文档、桌面和音乐 在保留目录的同时,实际上会清空它。也不包括ladmin、shared和Guest的用户文件 当我执行的时候。它不会清空文件,尽管我得到了预期的反馈。我是不是错过了一些简单的东西 DIR_CD=/Users/ cd $DIR_CD find . -type d ! -name "*ladmin*" ! -name "*Guest*" ! -name "*Sha

我正在尝试一些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/* \;
像这样

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,您可以用一个通配符表达式完成所有操作。

这听起来不是一个好的初学者项目。我希望你正在别人的系统上测试!假设ladmin、Guest和Shared存在于/Users中,这对我来说很好。有错误吗?你使用sudo运行了吗?它们存在,但似乎其他用户的文件仍然保持正常。此外,我所在的环境可以进行测试,不会有任何风险。不,这会删除ladmin shared和Guest中的所有内容。