2012-07-12 98 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