如何将文件从linux中的目录移动到多个子目录?

时间:2019-05-25 18:56:51

标签: linux file

我在Linux的maindir /目录中有46200个part *文件。我想将这些文件移到每个有4600个文件的子目录中。

As-is:
../maindir/part-00000-009afskf.csv
../maindir/part-00000-00ferskf.csv
...

To-be:
../maindir/subdir1/...first 4600 part files
../maindir/subdir2/...next 4600 part files
...
../maindir/subdir11/...remaining 200 part files.

有效的方法是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

请参阅上面的评论:

  

此处接受的答案应该是一个很好的起点https://unix.stackexchange.com/a/150138

以下是相关代码(未经测试!):

#!/bin/bash
cd maindir
c=4600; d=0
for csv_file in *.csv; do
   if [ $c -ge 4600 ]; then
      d=$(( d + 1 )); c=0; mkdir -p subdir${d}
   fi
   echo "$csv_file" subdir${d}  # equivalently, you could add "set -x" at the top of your script
   mv "$csv_file" subdir${d}
   c=$(( c + 1 ))
done

如果您觉得还可以,那么1)mv "$csv_file" subdir${d} COMMENT OUT ,2)验证它是否运行了您期望的命令,3)取消注释“ mv”并执行脚本。