原谅我的诺言。我有一个脚本,我想用来删除所有非英语.lproj文件。
if [ -f /var/mobile/Documents/Local\ Cookies/Clean ];
then
echo "Last run: $(cat /var/mobile/Documents/Local\ Cookies/Clean) "
else
echo "Hasn't been run yet "
fi
echo (grave)date(grave) > /var/mobile/Documents/Local\ Cookies/Clean
sleep 1
echo "Found files:"
Lang=( $( find / -name "*.lproj" ! -name "en*" ! -name "En*" ! -name "Base*" ) )
echo ${#Lang[@]}
rm -r $Lang >/dev/null 2>&1
echo "Finished cleaning language files."
sleep 1
echo "Found files:"
iphone=($( find / -name "*~iphone" ) )
echo ${#iphone[@]}
rm -r $iphone >/dev/null 2>&1
echo "Finished cleaning iPhone files."
唯一的问题是我(作为初学者)不知道如何使用rm -r $...
部分删除$ Lang和$ iphone数组中的文件。
答案 0 :(得分:1)
尝试
rm -r ${Lang[@]} >/dev/null 2>&1
和
rm -r ${iphone[@]} >/dev/null 2>&1
编辑:// 我只是尝试过,你也可以使用正常的变量名称,如$ Lang,它也应该工作。你怎么了?你有错误吗?
答案 1 :(得分:1)
另一个建议是使用xargs命令结合find
Lang=( $( find / -name "*.lproj" ! -name "en*" ! -name "En*" ! -name "Base*" -type f | xargs rm -f) )
顺便说一句,您应该使用变量Lang
来检查操作结果
if [ -z "${Lang}" ];then
echo "all files removed"
fi
你应该做一些测试,以提高效率。
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test1.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test3.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test2.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test4.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test5.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 testEn7.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 test6.lproj
-rw-r--r-- 1 cg cg 0 Jan 29 03:16 testBas87.lproj
-rwxrwxrwx 1 cg cg 229 Jan 29 03:16 test.sh
> result
bash-4.3$ ./test.sh
start
Lang[]
all files removed
end
bash-4.3$
bash-4.3$ ls -ltr
total 12
-rwxrwxrwx 1 cg cg 229 Jan 29 03:16 test.sh
答案 2 :(得分:0)
要修复它,请替换
rm -r $Lang >/dev/null 2>&1
rm -r $iphone >/dev/null 2>&1
与
rm -r En* *.lproj en* *~iphone >/dev/null 2>&1