如何将文件复制到递增编号的目录中?

如何将文件复制到递增编号的目录中?

例如,如果有目录 3:

mkdir 4; cp file 4

dir可以调用3 other text。除了增加的数字外,仍然不需要任何文本mkdir 4。需要检测最高数字。

答案1

假设您有连续编号的目录,如:“ dirnameN”,
其中“ N”是数字。

您可以通过以下方式(从父目录中)找到最高数字,

查找 . -type d -name dirname\* | sed 's|dirname||' | sort -n | tail -1

因此,您可以使用目录名称中的模式将其过滤掉(使用“ sed”)并保留数字。
然后按数字排序以找到最后一个数字。

之后,您可以向其中添加一个,然后继续使用相同的模式创建下一个目录。

比如说,

目录名称模式=目录名称
最后一个目录名称=11
新目录名称=$((上次目录名称+1))
newDirname=${dirnamePattern}${newDirname}

会给你 ' dirname12'。

答案2

下面应该在一行中完成这个任务:

mkdir $(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1))

给定文件夹:

1 something
3 other text
some 5 thing
2 test

这将创建一个名为 的文件夹6

如果您想要复制一个名为的文件file,请执行以下操作:

name=$(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1)); mkdir $name; cp file $name

相关内容