【问题标题】:Multiple file rename in AndroidAndroid中的多个文件重命名
【发布时间】:2012-07-12 12:23:42
【问题描述】:

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

这适用于将 .bak 扩展名添加到目录中的所有 pdf 文件

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

但是使用${varname:index:length} 的bash 字符串切片在android shell 中不起作用,所以我不知道如何删除扩展。有人有什么想法吗?

编辑:澄清一下,我正在尝试找到一种方法来删除 android shell 中字符串的最后四个字符。也欢迎其他我没有考虑过的可以解决我的特定问题的解决方案。

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

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

【问题讨论】:

    标签: android shell scripting


    【解决方案1】:

    您是否尝试过删除子字符串

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

    谢谢

    【讨论】:

    • ${varname:index:length} 不起作用,所以我怀疑android shell没有这个能力,但我会试试看。
    • 有效!!!你能给我指出一个使用这种技术进行字符串操作的参考吗?
    • tldp.org/LDP/abs/html/parameter-substitution.html#PSUB2 我在 bash 正则表达式上找到了这个资源,这似乎在 Android shell 中有效。我还没有想到一般如何进行字符串索引,但这解决了我的问题!恭喜,获得赏金。
    • 我已根据您的回复更新了问题以保留代码。再次感谢您,这为我解决了一个主要问题。
    • 这个链接thegeekstuff.com/2010/07/bash-string-manipulation 是导致我得到那个答案的原因。不客气
    【解决方案2】:

    我得到了一些代码,但它使用临时文件,试试看你的用处

    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
    

    【讨论】:

    • 如果 android 有 awk 和 cut 就可以了,但它没有。
    • 据我所知,PowerShell 是一个 Windows 终端实用程序。我不是很精通Windows。我认为 PowerShell 脚本对 Android 没有帮助。
    • 第一个与主机的 awk 工具有关,而不是 android native(它不存在),试图让 awk4j 在 Android 上运行有点过头了。我也可以编写一个单独的 Android 应用程序来执行此操作,但是使用内置 shell 的脚本会更方便/便携/多功能
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2014-01-06
    • 2019-07-23
    • 2013-07-08
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多