gpt4 book ai didi

linux - 将目录中的文件分配给子目录

转载 作者:太空狗 更新时间:2023-10-29 11:38:05 25 4
gpt4 key购买 nike

我在一个目录中有 1000 多个文件,我希望能够将它们分成子目录,每个子目录包含特定数量的文件。我不在乎什么文件进入什么目录,只要每个文件包含一个特定的数字即可。所有文件名都有一个共同的结尾(例如 .txt),但前面的内容各不相同。

任何人都知道一个简单的方法来做到这一点。

最佳答案

假设您只有以 *.txt 结尾的文件,没有隐藏文件,也没有目录:

#!/bin/bash
shopt -s nullglob

maxf=42

files=( *.txt )

for ((i=0;maxf*i<${#files[@]};++i)); do
s=subdir$i
mkdir -p "$s"
mv -t "$s" -- "${files[@]:i*maxf:maxf}"
done

这将创建目录 subdirXX 是一个从 0 开始的整数,并将在每个目录中放置 42 个文件。

你可以调整这个东西来为 X 填充零:

#!/bin/bash

shopt -s nullglob

files=( *.txt )
maxf=42
((l=${#files[@]}/maxf))
p=${#l}

for ((i=0;maxf*i<${#files[@]};++i)); do
printf -v s "subdir%0${p}d" "$i"
mkdir -p "$s"
mv -t "$s" -- "${files[@]:i*maxf:maxf}"
done

关于linux - 将目录中的文件分配给子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936522/

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