![如何创建具有随机名称的多个文件/目录?](https://linux22.com/image/59934/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E9%9A%8F%E6%9C%BA%E5%90%8D%E7%A7%B0%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%2F%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我正在尝试创建一些具有不同名称和不同扩展名的文件。假设我想创建 3 个具有以下名称和扩展名的文件:
File001.000
File002.001
File003.002
或者按字母顺序扩展:
File001.A
File002.B
File003.C
另外,如果我可以创建具有随机名称和扩展名的文件,那就更好了。
Filexct.cbb
Filedht.ryt
Filefht.vbf
答案1
我能找到的最简单的方法是:
touch $(paste -d '.' <(printf "%s\n" File{001..005}) \
<(printf "%s\n" {000..004}))
这将创建
File001.000 File002.001 File003.002 File004.003 File005.004
要了解其工作原理,请查看每个命令打印的内容:
$ printf "%s\n" File{001..005}
File001
File002
File003
File004
File005
$ printf "%s\n" {000..004}
000
001
002
003
004
$ paste -d '.' <(printf "%s\n" File{001..005}) \
> <(printf "%s\n" {000..004})
File001.000
File002.001
File003.002
File004.003
File005.004
因此,它们一起扩展到
touch File001.000 File002.001 File003.002 File004.003 File005.004
创建 5 个具有随机名称的文件要容易得多:
$ for i in {1..5}; do mktemp File$i.XXX; done
File1.4Jt
File2.dEo
File3.nhR
File4.nAC
File5.Fd8
要创建 5 个具有随机 5 个字母字符名称和随机扩展名的文件,您可以使用以下命令:
$ for i in {1..5}; do
mktemp $(head -c 100 /dev/urandom | tr -dc 'a-z' | fold -w 5 | head -n 1).XXX
done
jhuxe.77b
cwvre.0BZ
rpxpp.ug1
htzkq.f9W
bpgor.Bak
最后,要创建 5 个具有随机名称且没有扩展名的文件,请使用
$ for i in {1..5}; do mktemp -p ./ XXXXX; done
./90tp0
./Hhn4U
./dlgr9
./iVcn4
./WsJIx
答案2
如果你想保证它们是不同的,请查看mktemp
:
$ mktemp
/tmp/tmp.r8FumWPhn5
$ mktemp XXXXXXXX.tmp
Pu4Ii6Sf.tmp
答案3
我找到了一种简单的方法来创建具有随机名称和扩展名的文件和目录:
要使用随机扩展创建随机文件,请使用以下命令:
$ mktemp XXX.$(mktemp -u XXX)
-u, --dry-run 不要创造任何东西;只打印一个名字(不安全)
要创建多个文件,请在循环内使用上述命令:
$ for create in $(seq 5); do
mktemp XXX.$(mktemp -u XXX);
done
nDq.NoB
mT2.Ns0
DEN.aga
K7b.HCf
pNC.q9N
最后,如果您想创建多个目录,请使用 mktemp 及其-d
选项。
mktemp -d XXX.$(mktemp -u XXX)