我有一个目录,其中包含10,665个jpeg文件。
我希望将500个文件移动到一个新目录,将500个文件移动到下一个目录,等等。
必须首先移动最大的文件: 500-1包含最大的500个文件,500-2包含下一个最大的500个文件,等等。
我想这样做的原因是,我想把JPEG交给某个人,而文件管理器挂起,因为一个目录中有这么多。
发布于 2020-11-28 14:50:46
在基于Linux的系统上或使用GNU find的其他系统上,您可以使用这样的循环
find -maxdepth 1 -type f -printf '%s\t%P\0' |
sort -z -rn |
(
# x is max files per directory; d is directory number; k is file counter
x=500 d=1 k=1
while IFS=当您确信echo '##'将执行您希望它们做的事情时,请从循环中的两个动作行中删除它们。如果您不需要一份状态报告的话,请注释掉printf。\t' read -r -d '' size path
do
printf "%d\t%d\t%s\n" $k $d "$path" # File nr, Directory nr, Filename
echo "##" mkdir -p "/path/to/dir-$d"
echo "##" mv -f "$path" "/path/to/dir-$d/${path##*/}"
[[ $((k++)) -ge $x ]] && { k=1; ((d++)); } # Next directory
done
)当您确信D2将执行您希望它们做的事情时,请从循环中的两个动作行中删除它们。如果您不需要一份状态报告的话,请注释掉D3。
https://unix.stackexchange.com/questions/621712
复制相似问题