2016-04-07 3 views
0

I имеет следующую структуру папок:линукса Баша - перемещение х проценты файлов из каждой папки

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

То, что я хочу добиться того, чтобы перейти от каждого подраздел каталога, например. 10% из файлов, которые каждая папка содержат в новую папке maindir2 с той же структурой:

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

Если предположить, что в подкаталогах из maindir является следующим количеством файлов (номер в браслетах):

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

Я хотел бы иметь выход следующее maindir2:

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

и в maindir:

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

Пожалуйста, дайте мне знать, как это возможно с помощью команды bash.

ответ

1

Да, это возможно;)

это выглядит некрасиво (одна линия), но работа, запустить его изнутри maindir:

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 

С уважением,

+0

спасибо так много! это именно то, что я искал. работает как шарм! – domi771