異なる場所に同様の名前を持つディレクトリセットの場合
/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
ただし、ファイル名に空白や改行文字をうまく処理できないようですのでご使用の際はご注意ください。