ファイル名を変更してファイルがすでに存在する場合は、最後に数字を追加するスクリプトを作成したいと思います。
mv a.txt b.txt
b.txt が既に存在するため、b.txt.1 は名前が変更されたファイルになり、再度実行すると b.txt が存在し、b.txt.1 が存在するため b.txt.2 が得られます。
私はmv、mv --backupオプションがあることを知っていますが、b.txt~.1~が提供されていますが、その前後には~が欲しくありません。数字を追加する別のオプションはありますか?
ベストアンサー1
はい。これでスクリプトを書く意思があるので、これを完了するために知っておくべきことは次のとおりです。
ファイルが存在するかどうかをテストします。シェル式
[ -e filename ]
。man
実行できる他の多くのテストについては、このページを参照してください。人々がページを読みやすくするために、長いページでアイテムを検索するman
方法を学ぶことに慣れることをお勧めします。man
通常、最新のLinuxはブラウザをman
使用するようにコマンドを設定します。less
これにより、正規表現を使用して検索を実行できるため、その/
オプションのドキュメント(ほぼ常に1行で始まる)を見つけることができます。繰り返すにはタップします。-e
/^ *-e
/
ファイル名からサフィックス拡張子を削除します。シェル式は
${var%.*}
これを行うため、ファイル名を変数に保存し、変数と一緒に実行してファイルのデフォルト名を取得します。ファイル名のサフィックス拡張子を取得します。シェルページを
${var##*.}
もう一度見てください(例:、)。man
man sh
man bash
新しいファイル名を作成します。次のようになります。
new="${old%.*}${counter}${old##*.}"
while
したがって、新しいファイル名が存在しないことを確認し、存在する場合は変数を増やすループを実行しようとします。存在しない場合は、mv
そのファイル名をターゲットとして使用して操作を実行します。シェルスクリプトに変数を追加する方法は次のとおりです
count=$((++count))
。