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