4

Androidのシェルを使用してスクリプトを作成し、特定の拡張子のすべてのファイルの名前を変更して.bak拡張子を追加し、別のファイルの名前を変更して.bak拡張子を削除しようとしています。

これは、ディレクトリ内のすべてのpdfファイルに.bak拡張子を追加するために機能します

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

しかし、使用しているbash文字列のスライス${varname:index:length}はAndroidシェルでは機能しないため、拡張機能を削除する方法がわかりません。誰かアイデアはありますか?

編集:明確にするために、私はアンドロイドシェルで文字列の最後の4文字を削除する方法を見つけようとしています。私の特定の問題を解決する、私が検討していない他の解決策も歓迎します。

更新:与えられた回答に基づいて、次のコードは、変更されていないAndroidシェルの現在のディレクトリにあるその拡張子を持つファイルからファイル拡張子を削除します(.bakは選択した拡張子に置き換えることができます)

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

2 に答える 2

1

部分文字列を削除しようとしましたか

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

ありがとう

于 2012-07-20T11:35:45.143 に答える
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
于 2012-07-12T17:40:41.037 に答える