GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで正規表現を使用してファイルの名前を変更する

解決策 1:

名前の変更コマンドを発見するまで、私はこれを行うために perl スクリプトを書いていました。

名前の変更を行うために perl 正規表現を受け入れます:

このために、2 つのコマンドを入力しました:

rename 's/(\w+)-(\w+)-(\d\d)-(\d{4})-NODATA.txt\$1.$4$3$2.log$//' *
rename 'y/A-Z/a-z/' *.log

ただし、一部のディストリビューションでは、 rename にはこの機能がなく (man ページを参照)、perl-rename をインストールする必要がある場合があります。 または prename .

解決策 2:

mmv は、複数のファイルを移動/名前変更するための標準的な Linux ユーティリティです。ほとんどのディストリビューションのリポジトリから入手できます。上記の例では、次のことができます:

mmv '*-Log-*-*-*-NODATA.txt' '#l1.#4#3#2.log'

詳細については、この debaday 記事またはマニュアル ページを参照してください。

解決策 3:

私は名前変更コマンドを持っていないので、これに頼っています:

for myfile in /my/folder/*; do
    target=$(echo $myfile|sed -e 's/foo/bar/g')
    mv "$myfile" "$target"
done

解決策 4:

rename util はあまり「標準的」ではありません。各ディストリビューションには異なる rename が付属しています 道具。たとえば、Gentoo では rename です。 sys-apps/util-linux からです パッケージであり、正規表現をサポートしていません。

ハミッシュ ダウナー 推奨 mmv 、特にスクリプト内で使用する場合に便利です。

一方、一般的なケースでは、renameutils が必要になる場合があります。 qmv あります そして qcp これにより、選択したテキスト エディター (私の好み:Vim) が開き、そこで宛先ファイル名を編集できます。エディターを保存して閉じると、qmv /qcp すべての名前変更を行います。

両方 mmvqmv 正しい順序でファイルの名前を変更し、循環的な名前変更を検出するのに十分スマートであり、必要に応じて一時ファイルを自動的に作成します。


Linux
  1. Linuxでgocryptfsを使用してファイルを暗号化する方法

  2. パターンに従ってLinuxで多くのファイルの名前を変更する

  3. mv のような Linux コマンドはありますが、正規表現はありますか?

  1. Linuxでファイルの名前を変更する方法

  2. 「名前の変更」を使用して小文字の拡張子を持つようにファイルの名前を変更しますか?

  3. Linux シェルを使用してスペースを含むファイルの名前を変更するにはどうすればよいですか?

  1. Metamorphose 2 –Linuxでファイルとフォルダーの名前をバッチで変更

  2. LinuxでZIPファイルを操作する

  3. Linux でファイル名を大文字に変更