同じ名前のディレクトリセットの名前を変更し、別の場所にコピー/移動

同じ名前のディレクトリセットの名前を変更し、別の場所にコピー/移動

異なる場所に同様の名前を持つディレクトリセットの場合

/foldX/dirAサブディレクトリがありますaa1 aa2 aa3 aa4 aa5

/foldZ/dirAサブディレクトリがありますaa1 aa2 aa3

/foldY/dirAサブディレクトリがありますaa1 aa2 aa3

aa*ディレクトリを別のフォルダにコピーまたは移動する効率的な方法は/foldNew/dirA何ですかaa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10

aa1誰にaa4誰からfoldX

aa5誰にaa7誰からfoldY

aa8誰にaa10誰からfoldZ

ベストアンサー1

次のスクリプトは目的の操作を実行します。

#!/bin/bash
counter=0
mkdir foldNew
for i in fold?/dirA/aa*; do
    counter=$((counter + 1))
    mv $i foldNew/aa$counter
done

移動したフォルダの数を追跡し、Bashのワイルドカードシステムを使用して移動したいすべてのフォルダを繰り返します。

説明した設定を使用してテストしましたが、必要に応じて機能します。唯一の例外は、dirAに4つではなく5つのサブディレクトリがあるため、aa1からaa11に移動することです。

このスクリプトはaa20をaa3の前に移動します。サブディレクトリの順序が本当に重要な場合は、次のコードを試してみてください。

#!/bin/bash
counter=0
mkdir foldNew
for i in $(echo fold?/dirA/aa* | sort -V); do
    counter=$((counter + 1))
    mv $i foldNew/aa$counter
done

ただし、ファイル名に空白や改行文字をうまく処理できないようですのでご使用の際はご注意ください。

おすすめ記事