気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
まず実行されるコマンドを確認してから(このコマンドではまだmvは実行されません)
$ find . -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#'
後ろに「|sh」をつけて実際に実行してください
$ find . -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#' | sh
実行結果
terminal
1$ mkdir {1,2,3,4,5,6,7,8,9,10}章 2$ ls -F 310章/ 1章/ 2章/ 3章/ 4章/ 5章/ 6章/ 7章/ 8章/ 9章/ 4$ find . -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#' 5mv ./4章 ./sec4 6mv ./6章 ./sec6 7mv ./10章 ./sec10 8mv ./8章 ./sec8 9mv ./7章 ./sec7 10mv ./2章 ./sec2 11mv ./9章 ./sec9 12mv ./1章 ./sec1 13mv ./3章 ./sec3 14mv ./5章 ./sec5 15$ find . -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#' | sh 16$ ls -F 17sec1/ sec10/ sec2/ sec3/ sec4/ sec5/ sec6/ sec7/ sec8/ sec9/
#追記
他の方の回答のコメントを見て思ったのですが、章番号が単純な連番であることがわかっているのなら
seq 10 | xargs -I@ echo mv @章 sec@ | sh
あたりでも十分に目的を達成できる気がしてきました。
#コメントでのご指摘を受けて補足
質問にあるディレクトリ構造の範囲であれば不具合は表面化しない部分なのですが、dodaさんがコメントで指摘されている通り下の階層に渡って「章」ディレクトリが複数ある場合にmvに失敗します。
それを防ぐようにする場合には次のようにfindにオプションをつけてください
$ find . -maxdepth 1 -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#' | sh
$ find . -depth -name *章 | xargs -I@ echo mv @ @ | sed 's#([^/]*)章$#sec\1#' | sh
投稿2021/01/05 03:01
編集2021/01/05 09:09総合スコア1248
0
投稿2021/01/05 02:05
総合スコア88042
0
既にベストアンサーが付いているので目的は達しているとは思いますが別解を。
zsh付属のzmvを利用
zshを使っているのならばzmvが便利です。
autoload -U zmv
を実行するとzmvが使えるようになります。
zmvで一括リネームするには以下を実行します。
zsh
1zmv -W '*章' 'sec*'
あらかじめalias zmv='noglob zmv'
を実行しておくと、zmv -W *章 sec*
のように、クオート無しでコマンドが実行できるようになります。
zmvを頻繁に使うようならば、以下を.zshrcに追加しておくといいでしょう。
zsh
1autoload -U zmv 2alias zmv='noglob zmv'
forによる繰り返し処理
こちらはzshだけではなくbash等でも使えます。
以下のコマンドでリネームが出来ます。
for dir in *章; do mv $dir sec${dir%章}; done
for dir in *章
は*章
の展開結果を一つずつ変数dir
にいれで、do
からdone
の間のコマンドを繰り返し実行します。
${dir%章}
は、変数dir
を展開する時に末尾の章
を削ります。
逆にsec1
のsec
の部分を削りたい場合は${dir#sec}
のようにします。
慣れるまではhidezzzさんがやられているように、mv
をecho mv
にして実行するコマンドを表示させて確認し、問題が無いようならば| sh
を追加するのが安全でしょう。
投稿2021/01/05 05:41
総合スコア947
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 05:47
2021/01/05 08:34