|
俺想将 /usr/share/locale下的除zh_CN外的文件夹删除,locale.alias和zh_CN目录内的东西不能删除
将/usr/share/man下的除中文、英文外的帮助文件删除。。。
$ find /usr/share/locale -maxdepth 0 \( -type d ! -name "zh_CN" \) -exec ls {} \;
am cs de_AT el et fr hu ja lt nl pt_BR si tr vi
ar da de_CH en_GB eu gl id ko lv no pt_PT sk uk zh_CN
ca de de_DE es fi he it locale.alias nb_NO pl ru sv ur zh_TW
结果错误,zh_CN被列出来了
$ ls /usr/share/man
es jp man0p man1p man3 man3x man5 man7 mann sv
fr man man1 man2 man3p man4 man6 man8 nl zh_CN
$ find /usr/share/man -maxdepth 0 \( -type d ! -name "man*" -name "zh_CN" \) -exec ls {} \;
$ find /usr/share/man -maxdepth 1 \( -type d ! -name "man*" ! -name "zh_CN" \) -exec ls {} \;
man1
man1
man1
man1
man1
$ find /usr/share/man -maxdepth 0 \( -type d ! -name "man*" ! -name "zh_CN" \) -exec ls {} \;
也错误。。。。
同时俺想将这个功能——删除指定目录下 除。。。以外的所有目录
rm-dir-except ()
{
#$0, 需要清理的目标目录;
#$1, ... 需要排除的目录;
find $0 -maxdepth 0 .....
}
以下是俺最开始实现的脚本,但俺认为功能强大的find应该可以完成这个简单动作——删除/usr/share/locale下非zh_CN的目录, zh_CN的下级目录自然是不能删除的。。。
#!/bin/bash
ls /usr/share/locale >>/tmp/del.txt
cat "/tmp/del.txt"| grep -v "^#" | while read dirname; do
if [ "$dirname" != "zh_CN" ] && [ "$dirname" != "locale.alias" ]; then
echo " 删除语言包$dirname"
rm -rf "/usr/share/locale/$dirname"
else
echo " 保留语言包$dirname"
echo "/usr/share/locale/$dirname"
fi
done
但这个基本也不具备通用性——删除指定目录下除指定的目录外的目录。。。
比如要实现删除/usr/share/man下除zh_CN和英文帮助外的所有帮助文件,代码就很麻烦的了。。。
哪位高手兄弟能帮忙下? 多谢了 |
|