私のUbuntuシステムには次のファイルのリストがあります。
sql_1_migration.sql
sql_2_migration.sql
sql_3_migration.sql
...
sql_100_migration.sql
sql_1000_migration.sql
...
名前を次のように変更する必要があります。
sql_0001_migration.sql
sql_0002_migration.sql
sql_0003_migration.sql
...
sql_0100_migration.sql
sql_1000_migration.sql
...
Bashでこれを行う方法を知っていますか?ご覧のとおり、0
4桁以外の数字を含むファイルを前に追加したいと思います。 Ubuntu GNU / Linuxオペレーティングシステムでこれを行う必要があります。
ベストアンサー1
このように:
rename -n 's/^sql_(\d+)/sprintf "sql_%.04d", $1/e' sql_*_migration.sql
-n
出力が良くなったらスイッチを取り外します。
これを行うこともできないかもしれない同じ名前の他のツールがあるので注意してください。
パッケージの一部である名前変更コマンドはutil-linux
そうではありません。
次のコマンドを実行すると(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
Perl script, ASCII text executable
を含めて含まない結果を得ると、ELF
これが正しいツールであるようです=)
そうでない場合は、それをデフォルト値に設定し(通常はすでに適用されている)、Debian
次のように派生しますUbuntu
。
$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename
他のディストリビューションにこのコマンドがない場合は、パッケージマネージャを検索してインストールするか、手動で行う(学科がありません...)
このツールはもともとPerlの父親であるLarry Wallによって書かれました。