Bash脚本可以均匀地分割文件和文件夹

时间:2015-05-21 15:02:59

标签: bash shell

我有一组文件和文件夹,如下所示:

├── controller
│   └── controller.txt
├── hello.txt
├── hi.txt
├── me.txt
└── model
    └── user.txt

这里的内容会经常更改,新文件,文件删除,文件夹添加,文件夹删除等。我需要一种方法将这些文件均匀地分成3rds(虽然这可能会改变)。

分手我的意思是,我只需要保留第一个文件。我还需要另一个脚本来保存第二个文件等等。

这是我最初的想法虽然它不起作用:

ls -1 | wc -l | head -n / 3 | xargs rm

上下文更新:

我正在使用并行ci工具,我只希望一次在一台服务器上运行1/3的测试文件。所以我需要一台服务器上的脚本才能:

服务器1:

├── controller
│   └── controller.txt
├── hello.txt

服务器2:

├── hi.txt
├── me.txt

服务器3:

└── model
    └── user.txt

1 个答案:

答案 0 :(得分:1)

这是一个示例脚本。您可以将echo $ file_name替换为mv,cp,rm等任何其他命令。

#!/bin/sh
# the helper file needs to be outside of the stucture, when the script is ran
find -type f > ../helper_file
NUM_FILES=`cat ../helper_file | wc -l`
PORTION=$(($NUM_FILES/3))

i=0
cat ../helper_file | \
while read file_name; do
   i=$(($i+1 )) 
   if [ $i -ge $PORTION ] ; then break; fi 

   echo $file_name
done