2012-07-12 3 views
4

Я пытаюсь написать сценарий с помощью оболочки Android, чтобы переименовать все файлы данного расширения, чтобы добавить расширение .bak, а другое - удалить его.Несколько файлов переименовать в Android

Это работает для добавления .bak расширений для всех PDF-файлов в каталоге

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

Но Баш строка нарезки с помощью ${varname:index:length} не работает в андроиде оболочки, так что я в недоумении, как удалить расширение. У кого-нибудь есть идеи?

EDIT: уточнить, я пытаюсь найти способ удалить последние четыре символа строки в оболочке Android. Также приветствуются другие решения, которые я не рассмотрел, которые будут решать мою конкретную проблему.

ОБНОВЛЕНИЕ: На основании данного ответа следующий код удалит расширение файла из любого файла, имеющего это расширение, в текущем каталоге в немодифицированной оболочке Android (где .bak можно заменить расширением по вашему выбору)

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

ответ

1

вы пробовали удаление подстроки

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

Благодаря

+0

$ {varname: index: length} не работает, поэтому я подозреваю, что оболочка Android не имеет этой возможности, но я попробую. –

+0

Он работает !!! Не могли бы вы указать мне ссылку на строковые манипуляции, используя эту технику? –

+0

http://tldp.org/LDP/abs/html/parameter-substitution.html#PSUB2 Я нашел этот ресурс в регулярном выражении bash, и это кажется действительным в оболочке Android. Я до сих пор не думал о том, как вообще выполнять индексацию строк, но это решает мою проблему! Поздравляем, награда. –

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 и вырезать, которые он не делает. –

+0

Что такое Powershell? (это связано с android ???) –

+0

PowerShell - это утилита для Windows-терминалов, насколько мне известно. Я не очень хорошо разбираюсь в Windows. Я не думаю, что скрипты PowerShell будут полезны для Android. –

Смежные вопросы