4番目と6番目の文字の後にダッシュを追加して、いくつかのディレクトリの名前を変更しようとしています。私はこの記事を読んだ。Bashでディレクトリだけを繰り返す方法は?ダッシュを挿入したいディレクトリを正常に繰り返すことができます。しかし、これを見たらファイル名を変更すると、4 番目と 6 番目の文字の後にダッシュが追加されます。ディレクトリに同様の構文を使用することもできますが、そうした後はそれを行うことができないことに気づきました。これは私の構文です。
for d in */ ; do
mv “$d" “${d::4}-${d:4:2}-${d:6}"
done
SE全体を検索しましたが、同様の投稿は見えませんでした。この質問に対する回答が他の場所で提供されている場合は、事前にお詫び申し上げます。
また、提供できる助けに感謝します。最高、ジョン
ベストアンサー1
使用真珠rename
すべてのディレクトリの名前を変更します。
rename -n 's/^(.{4})(.{2})/${1}-${2}-/' */
-n
テストに満足したら削除してください。
前任者:
$ mkdir foobarbase{a..c}
$ rename -n 's/(.{4}) # 1st capture group
(.{2}) # 2nd capture group
/${1}-${2}-/x' foobar*
rename(foobarbasea, foob-ar-basea)
rename(foobarbaseb, foob-ar-baseb)
rename(foobarbasec, foob-ar-basec)
コードを保持するには、“
ASCII二重引用符を置き換えます。"