01A*_*key 13 bash command-line mkdir
我想创建一个以数字结尾的目录,例如“dir1”,如果目录已经存在,则增加该数字,直到遇到不存在的目录名称,我需要在一行中执行此操作一个 Linux 命令行,类似于:
mkdir --increment dir$
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
到目前为止,我有这个:
dir=output; n=0; mkdir -p $dir$n; if test -d $dir$n; then n=$((n+1)); echo $dir$n; fi
Run Code Online (Sandbox Code Playgroud)
但它只是回显下一个目录名称,我需要它来递归执行命令。
Jde*_*eBP 26
这是使用 的一个微不足道的练习while
:
n=0 尽管 !mkdir 目录$n 做 n=$((n+1)) 完毕
但是,当然不用多想就会意识到这种微不足道的机制不能很好地扩展。
因此,与其重新发明轮子并不得不再次剃掉所有角落,不如从模板中创建独特的临时目录略有不同:
名称=$(mktemp -d dirXXXXXXXXXXX)
如果您只想逐步创建以正确顺序列出的目录,我可以推荐基于当前日期命名的文件夹吗?
DATE=$(date +%F)
mkdir "dir-$DATE"
Run Code Online (Sandbox Code Playgroud)
它将创建名称类似dir-2014-03-02
( 的目录YYYY-MM-DD
,以便按字母顺序出现)。
如果每天创建多个目录,则可以将当前时间添加到文件名中。查看man date
如何调整date
.
首先找到“最大”目录名,获取数字并递增:
last_dir=(printf "%s\n" dir* | sort -Vr | head -1)
num=$(last_dir#dir)
mkdir "dir$((num+1))"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6603 次 |
最近记录: |