2点間のテキストを削除して一連の動画の名前を変更する方法を探しています。具体的には6番目の文字以降最後の「LabelMe--」まですべて削除したいと思います。
0001--LabelMe--A005_01241110_C001--LabelMe-- --Interview--Man in library.mov
0002--LabelMe--A005_01241110_C002--LabelMe-- --Broll--Man looking at books.mov
0003--LabelMe--A005_01241111_C003--LabelMe-- --Broll--messed up--LabelMe-- --Broll--Sitting at table.mov
AppleのAutomatorサービスを使用してこれを実行しようとしています。複数のファイルを右クリックし、名前を整理するサービスを選択します。コードスニペットを見つけましたが、正しく使用しているかどうかはわかりません。
for f in "$@"
do
echo sed -e 's/\(--LabelMe).*\(LabelMe--)/\1\2/'
done
ベストアンサー1
(perl) を使用して名前を変更します。 Appleについてはよくわかりませんが、ほとんどのLinuxディストリビューションには2つのバージョンの名前変更が付属しています。 Perlの名前変更はより強力です。
-n
まず、「模擬実行」を実行し、変更を適用しないこのフラグを使用してコマンドを実行します。
$ rename 's/(.{6}).*LabelMe--/$1/' 000* -n
0001--LabelMe--A005_01241110_C001--LabelMe-- --Interview--Man in library.mov -> 1110_C --Interview--Man in library.mov
0002--LabelMe--A005_01241110_C002--LabelMe-- --Broll--Man looking at books.mov -> 1110_C --Broll--Man looking at books.mov
0003--LabelMe--A005_01241111_C003--LabelMe-- --Broll--messed up--LabelMe-- --Broll--Sitting at table.mov -> messed --Broll--Sitting at table.mov
結果に満足したら、実際に実行できます。rename 's/(.{6}).*LabelMe--/$1/' 000*
説明する
rename 's/foo/bar/' 000*
foo
:この形式は正規表現を検索し、bar
globに一致するすべてのファイルで機能します000*
。(.{6}).*LabelMe--
:検索している正規表現です。 6人のキャラクターを見つけて.{6}
キャプチャグループに入れます(.{6})
。その後、.*
表示前に任意の文字を持つことができますLabelMe--
。$1
:上記の文字列に置き換える内容です。$1
上記の一致グループの内容を参照してください。(.{6})
残りは置き換えられません。つまり、最初の6文字を削除してからのすべての内容ですLabelMe--
。