2012-07-12 100 views
4

我正在尝试使用Android的shell编写脚本来重命名给定扩展名的所有文件,以添加.bak扩展名,并将另一个扩展名删除。Android中的多文件重命名

这适用于在目录中添加.bak扩展到所有PDF文件使用${varname:index:length}在Android外壳不起作用

ext=.bak 
for f in *.pdf 
do 
    mv $f $f$ext 
done 

但是bash的字符串的切片,所以我在亏损为如何删除扩展名。有没有人有任何想法?

编辑:澄清,我试图找到一种方法来删除android外壳中的字符串的最后四个字符。我还没有考虑过哪些解决我的具体问题的其他解决方案也是受欢迎的。

更新: 基于给定的答案,以下代码将从未修改的Android shell中的当前目录中拥有该扩展名的任何文件中删除文件扩展名(其中.bak可以用您选择的扩展名替换)

for f in *.bak 
do 
    mv $f ${f%.*} 
done 

回答

1

你有没有尝试删除的子

fname="test.abc.bak" 
mv $fname ${fname%.*} 

感谢

+0

$ {varname:index:length}不起作用,所以我怀疑android shell没有这种能力,但我会尝试。 – 2012-07-22 21:41:58

+0

它的作品!你能否指点我使用这种技术的字符串操作的参考? – 2012-07-23 00:41:55

+0

http://tldp.org/LDP/abs/html/parameter-substitution.html#PSUB2我在bash正则表达式中发现了这个资源,这在Android shell中似乎是有效的。一般来说,我还没有想过如何做字符串索引,但是这解决了我的问题!祝贺,赏金颁发。 – 2012-07-23 00:46:38

0

我得到了一些代码,但它使用的临时文件,只是尝试一下,检查您有用

ls -l |awk '{print $9}' >/list 
cat /list |while read line 
do 
echo $line >/tempfile 
first=`cut -f1 -d'.' /tempfile` 
echo $first >>/output.txt 
mv $line $first 
done 
+0

这将工作,如果机器人有awk和切割,它没有。 – 2012-07-12 17:43:33

+0

什么是Powershell? (它是关于android ???) – 2012-07-12 17:50:32

+0

PowerShell是一个Windows终端实用程序,据我所知。我对Windows不是很熟悉。我不认为PowerShell脚本对Android有帮助。 – 2012-07-12 17:54:25