ファイルがすでに存在する場合は、数値を追加してファイルの名前を変更します。

ファイルがすでに存在する場合は、数値を追加してファイルの名前を変更します。

ファイル名を変更してファイルがすでに存在する場合は、最後に数字を追加するスクリプトを作成したいと思います。

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

はい。これでスクリプトを書く意思があるので、これを完了するために知っておくべきことは次のとおりです。

  1. ファイルが存在するかどうかをテストします。シェル式[ -e filename ]man実行できる他の多くのテストについては、このページを参照してください。人々がページを読みやすくするために、長いページでアイテムを検索するman方法を学ぶことに慣れることをお勧めします。man通常、最新のLinuxはブラウザをman使用するようにコマンドを設定します。lessこれにより、正規表現を使用して検索を実行できるため、その/オプションのドキュメント(ほぼ常に1行で始まる)を見つけることができます。繰り返すにはタップします。-e/^ *-e/

  2. ファイル名からサフィックス拡張子を削除します。シェル式は${var%.*}これを行うため、ファイル名を変数に保存し、変数と一緒に実行してファイルのデフォルト名を取得します。

  3. ファイル名のサフィックス拡張子を取得します。シェルページを${var##*.}もう一度見てください(例:、)。manman shman bash

  4. 新しいファイル名を作成します。次のようになります。new="${old%.*}${counter}${old##*.}"

  5. whileしたがって、新しいファイル名が存在しないことを確認し、存在する場合は変数を増やすループを実行しようとします。存在しない場合は、mvそのファイル名をターゲットとして使用して操作を実行します。

  6. シェルスクリプトに変数を追加する方法は次のとおりですcount=$((++count))

おすすめ記事