CentOS系でファイル名の文字を置換してファイル名を変換
CentOS系で文字列を置換して、ファイル名を変換する「rename」コマンドについて
CentOS系で、「test_01.txt」等のファイルが有り「test01.txt」の用に「_」を省略したいときがあります。「mv」コマンドでもできますがファイル名の変更には「rename」コマンドが使ってもできます
【書式】rename [置換前文字列] [変換後の文字] [対象のファイル名(複数も可)]
(例)「test_01.txt」の「_」を省略して「test01.txt」にしたい
$ rename _ '' test_01.txt
また、ワイルドカード(*)を使って、複数のファイルも指定できます
(例)拡張子が「.txt」を「.bak」に変更したい
$ rename .txt .bak *.txt
Ubuntu系とCentOS系の「rename」コマンドの違い
また、Google等でrenameコマンドを検索すると、下記のような書式でのrenameコマンドの使用方法を見かけますが、下記の書式はUbuntu系でのrenameコマンドの使い方になります
【Ubuntu系 書式】 rename “s/置換前文字列/置換後文字列/;" 対象のファイル名
Ubuntu系では、renameコマンドはPerlスクリプトとして実装されています。置換文字列をダブルクォーテーション「"」またはシングルクォーテーション「’」で囲み、先頭に「s」を付けて間にスラッシュ「/」で挟む必要があります。
CentOS系では、renameコマンドは標準コマンドとして実装されています。そのため、置換文字列をそのまま指定できます。
【CentOS系 書式】 rename 置換前文字列 置換後文字列 対象のファイル名
# ubuntu系での使用例 $ rename "s/test/test_/;" test20240922.txt # CentOS系だと以下になります $ rename test test_ test20240922.txt
ディスカッション
コメント一覧
まだ、コメントがありません