BASH:如何在文件名数组上执行rm?

BASH:如何在文件名数组上执行rm?,bash,Bash,原谅我的愚蠢。我有一个脚本,我想用它删除所有非英语的.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(grav

原谅我的愚蠢。我有一个脚本,我想用它删除所有非英语的.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阵列上的文件。

试试看

rm -r ${Lang[@]} >/dev/null 2>&1  

编辑:// 我刚刚试过,你也可以使用普通的变量名,比如$Lang,它应该也能工作。你有什么问题?是否有错误?

若要修复错误,请更换

rm -r $Lang >/dev/null 2>&1 
rm -r $iphone >/dev/null 2>&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                                                                                                                                                              

我得到了一个常数“48”和“2”,我假设它正在查找的文件的数字不明确,但没有删除。这些值来自echo${#Lang[@]},我不知道你想用这个命令显示什么:D列出找到的文件?->拆下#。当前命令显示字符串的长度。另外,您的find命令是错误的。删除括号并将其更改为Lang=$(find/-name.lproj”!-name“en”!-name“en*”!-name“Base*”)您是否尝试过此方法?我假设只在名称前面加一个“!”不会删除这些文件名?
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