创建以零开头的连续编号文件夹并将文件移动到其中

创建以零开头的连续编号文件夹并将文件移动到其中

我已经发现这个 Ask Ubuntu 答案并将其改为:

newdir=$(printf "%04d")

find . -maxdepth 1 -type f -name '*.mp3' -print0 | \
     sort -z | while IFS= read -d '' -r file; do \
     mkdir -p "$newdir" && mv "$file" "$newdir" ;
     ((newdir++));
done

可以,但只有第一个文件夹有前导零。我希望所有文件夹都用四位数字编号。

文件应按照-ls l与本例中显示的顺序相同的顺序移动到文件夹中:

001_003.mp3
001_007.mp3
001_021.mp3
001_035.mp3
002_010.mp3
002_013.mp3
002_029.mp3

为了实现这一点,我-zsort命令中添加了选项(就像上面链接下的原始代码中使用的那样)。

任何帮助,将不胜感激。

答案1

假设bash

n=0

find . -maxdepth 1 -type f -name '*.mp3' -print0 | \
     sort -z | while IFS= read -d '' -r file; do \
     printf -v newdir '%04d' $((n++));
     mkdir -p "$newdir" && mv "$file" "$newdir/" ;
done

如果你使用的 shell 不支持printf -v,那么你可以使用原始版本中的命令替换,即newdir=$( printf '%04d' $((n++)) )

相关内容