シェル拡張名の変更コマンドの逆参照

シェル拡張名の変更コマンドの逆参照

renameまた、コマンドでコマンド置換拡張が必要な​​場合、コマンドでグループ一致パターンを使用し、代替部分で逆参照を使用する場合は拡張に二重引用符を使用しますが、シェルも逆参照をパラメータとしてrename処理して名前変更の問題を引き起こします。これをどのように避けることができますか?

rename "s:(.*)$(date +"%Y%m%d"):$1$(date -d "+1day" +"%Y%m%d"):" *

また、拡張部分を置き換える別のコマンドを試しましたが、運がありませんでした$(date -d "+1day" +"%Y%m%d")。 。

rename 's:(.*)'"$(date +"%Y%m%d")"':$1'"'"$(date -d "+1day" +"%Y%m%d")"'"':' *

ベストアンサー1

ちょうど$脱出してください$1

rename "s:(.*)$(date +"%Y%m%d"):\$1$(date -d "+1day" +"%Y%m%d"):" *

ただし、次のようにパターンを単純化できます。

rename "s#$(date +%Y%m%d)#$(date -d +1day +%Y%m%d)#" *

(これは#拡張には存在しないと仮定しますdate)。

おすすめ記事