如何在不创建子文件夹的情况下将父文件夹分为2个或更多。
类似于文件夹A进入folderA1,FolderA2,但都位于同一目录中,而不是文件夹A中的子文件夹。
实际上这是我使用的脚本,但最终只能创建子文件夹
let fileCount=3000
let dirNum=1
for f in *
do
[ -d $f ] && continue
[ $fileCount -eq 3000 ] && {
dir=$(printf "%03d" $dirNum)
mkdir $dir
let dirNum=$dirNum+1
let fileCount=0
}
mv $f $dir
let fileCount=$fileCount+1
done
答案 0 :(得分:2)
在folderA
的父目录中,运行以下脚本:
#!/bin/bash
i=0 # counter for current file
j=0 # counter for current directory
batchsize=1000 # size of each batch
find folderA -type f -print0 | while read -r -d $'\0' file
do
if (( i % batchsize == 0 ))
then
(( j++ ))
mkdir "dir_$j"
fi
mv -- "$file" "dir_$j"
(( i++ ))
done
如果folderA
中的所有文件都具有“普通”名称,即没有空格,没有glob字符等,则脚本可以写为
#!/bin/bash
find folderA -maxdepth 2 -type f | xargs -n 1000 | while read files
do
mkdir dir_$((++i))
mv $files dir_$i/
done
比较简短,表现也更好。