2016-04-07 31 views
0

gelen dosyaların hareket x yüzdesi aşağıdaki klasör yapısı vardır:linux bash - her klasörün

maindir 
|-sub1 
|-sub2 
|-sub... 
|-sub1000 

Ne elde etmek istediğiniz her alt dizin örneğin hareket etmektir. Her klasör aynı yapıya sahip yeni bir klasör maindir2 içine içeren dosyalar% 10:

maindir2 
|-sub1 
|-sub2 
|-sub... 
|-sub1000 

maindir gelen alt dizinleri varsayarsak dosyaları aşağıdaki miktarıdır (bilezik sayılar):

maindir 
|-sub1 (10) 
|-sub2 (100) 
|-sub... 
|-sub1000 (50) 

maindir 
|-sub1 (1) 
|-sub2 (10) 
|-sub... 
|-sub1000 (5) 

ve maindir içinde:

ben maindir2 aşağıdaki çıktı olarak istiyorum

maindir 
|-sub1 (99) 
|-sub2 (90) 
|-sub... 
|-sub1000 (45) 

Lütfen bunun bir bash komutuyla nasıl mümkün olduğunu bildirin.

cevap

1

Evet bu mümkün;)

o maindir içinden, koşmak çirkin (bir çizgi) ama iş bak:

find . -type f -exec dirname {} + | uniq -c | while read n d;do echo "Directory:$d Files:$n Moving first:$(($n/10))";mkdir -p ../maindir2${d:1};find $d -type f | head -n $(($n/10)) | while read file;do mv $file ../maindir2${d:1}/;done;done 

Selamlar,

+0

çok teşekkür ederim! tam olarak aradığım şey bu. ÇALIŞIYOR bir cazibe gibi! – domi771