ファイル名から日付と時刻を繰り返し削除します。

ファイル名から日付と時刻を繰り返し削除します。

次の形式のファイルフォルダを含むフォルダがあります。

resultstatsDF_iris_2017-05-26--21-33-35-437096_methodnr-2_percentage-0.05_seed-0.wcr

私はこれらのそれぞれの日付と時刻を削除したいので、この場合は次のような結果を得ます。

resultstatsDF_iris_methodnr-2_percentage-0.05_seed-0.wcr

Bashでこれを行うにはどうすればよいですか?

ベストアンサー1

本当にやりたいなら「バッシュと一緒に」、その後

find . -name '*.wcr' -execdir bash -c '
  shopt -s extglob; for f; do echo mv -- "$f" "${f/_+([0-9-])_/_}"; done
' bash {} +

+([0-9-])これは、セットで発生する1つ以上の文字に一致する拡張globに依存します。[0-9-]

${f/_2017+([0-9-])_/_}たとえば、単純に数字とダッシュを一致させるのが一般的である場合は、置換をより具体的にすることができます。

注:削除 echo あなたが望むことをしていることを確信してください。

おすすめ記事