複数のディレクトリの名前を変更する

複数のディレクトリの名前を変更する

名前が最後のサブディレクトリであるすべてのディレクトリを検索したいと思います。文書をクリックし、名前を次に変更します。医者。私の名前をどのように変更できますか?

私は最初の部分を持っています:

find -type d -name 'doc' 

たとえば、次のディレクトリパスを返します。

./foo/bar/doc

答え1

find . -depth -type d -name doc -exec sh -c 'mv "${0}" "${0%/doc}/Doc"' {} \;

答え2

zshでは利用可能ですzmv機能バッチの名前変更ファイル:

zmv '(**/)doc' '${1}Doc'

ディレクトリ名でない場合は、doc以下を追加して一致しないことを確認してください。グローバル予選:

zmv -Q '(**/)doc(/)' '${1}Doc'

答え3

ディレクトリを大文字で表示し、4+ を使用する場合は、次の操作をbash行う必要があります。

find . -type d -name doc -print0 \
| while read -rd $'\0' file; do
    dname=$(dirname "$file")
    fname=$(basename "$file")
    mv "$file" "$dname"/"${fname^}"
  done

\0珍しいファイル名を正しく処理するように注意してください。

修正する

〜のようにjw013コメントで指摘した内容が${var^}期待どおりに機能しません。パスをディレクトリとファイル名に分割し、^演算子を$fname

ところで、ありがとうございます。急ぐ不足しているパイプを追加するために使用されます。

関連情報