複数ファイルの一部の名前変更

複数ファイルの一部の名前変更

複数のファイルをインポートして名前を付けます。

data_a_LT.fits
data_a_LT.coo
data_a_LT.ec
data_a_LT.grp

すべての「a_LT」を「LT_A」に置き換えたいです。

data_LT_A.fits
data_LT_A.coo
data_LT_A.ec
data_LT_A.grp

1つのコマンドでこれを行う方法。それは次のとおりです。

mv *a_LT* *LT_A*

答え1

バッシュ使用:

for file in *; do [[ -f "$file" ]] && mv "$file" "${file/a_LT/LT_A}"; done
data_LT_A.coo
data_LT_A.ec
data_LT_A.fits
data_LT_A.grp

答え2

もしrename次のコマンドを使用できます。

rename 's/a_LT/LT_A/' *

別の方法awk

find -type f | awk -F'a_LT' '{printf "mv \"%s\" \"%sLT_A%s\"\n", $0, $1, $2}' | bash

答え3

私はxargsを使うのに慣れています。

ls -1 | sed 's/\(\(.*\)a_LT\(.*\)\)/\1 \2LT_A\3/' | xargs -n 2 mv

答え4

私は次の方法を選択しましたが、うまくいきます。

rename 's/a_LT/LT_A/g' *

簡潔で覚えやすい1行。

関連情報