我在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.
有效的方法是什么?谢谢。
答案 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”并执行脚本。