解決策 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
すべての名前変更を行います。
両方 mmv
と qmv
正しい順序でファイルの名前を変更し、循環的な名前変更を検出するのに十分スマートであり、必要に応じて一時ファイルを自動的に作成します。