gpt4 book ai didi

linux - 将一个文件夹拆分为多个文件夹,而不在终端/bash 中创建子文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:31 25 4
gpt4 key购买 nike

如何在不创建子文件夹的情况下将父文件夹拆分为 2 个或更多。

就像将文件夹 A 放入文件夹 A1、文件夹 A2 中,但全部位于同一目录中,而不是文件夹 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

最佳答案

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 中的所有文件都具有“正常”名称,即没有空格、没有全局字符等,则脚本可以编写为

#!/bin/bash
find folderA -maxdepth 2 -type f | xargs -n 1000 | while read files
do
mkdir dir_$((++i))
mv $files dir_$i/
done

它更简短,而且性能更高。

关于linux - 将一个文件夹拆分为多个文件夹,而不在终端/bash 中创建子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com