3番目のレベルディレクトリの名前を同じ名前に変更します。

3番目のレベルディレクトリの名前を同じ名前に変更します。

私は100のサブディレクトリを含むディレクトリAを持っています。これらの各サブディレクトリにはディレクトリが含まれています。

たとえば、100 個のディレクトリのそれぞれにあるこの単一ディレクトリの名前を同じ名前に変更するにはどうすればよいですかX。コマンドを試しましたが、mmv運がありません。

どんな助けでも大変感謝します!

ベストアンサー1

より良い方法かもしれませんが、

使用bashfind

while IFS= read -r dir; do
    mv -- "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)

まず、テストを実行してみてください。たとえば、次のようになります。

while IFS= read -r dir; do
    printf 'mv "%s" "%s"\n' "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)

簡単に言うと:

  • find
    • .デフォルトディレクトリである現在のディレクトリ(通常はAあなたの場合)
    • type d(ディレクトリ)最小と最大の深さは2です。
  • bash読ん $dirで次に進みます。find$dir
    • ${dir%/*}最後の項目/とそれ以降の項目の両方を削除
      • /X新しいディレクトリ名を追加します。

たとえばfind ./A ...、Aクラスより1レベル下に住んでいる場合は、この評価を使用してください。

オプションで(非POSIX)に追加して実行されたアクションを表示します-vmv

おすすめ記事