Command-Line

如何使用隨機名稱創建多個文件/目錄?

  • July 25, 2017

我正在嘗試創建一些具有不同名稱和不同副檔名的文件。假設我想創建例如 3 個具有以下名稱和副檔名的文件:

File001.000
File002.001
File003.002

或使用字母副檔名:

File001.A
File002.B
File003.C

如果我可以創建具有隨機名稱和副檔名的文件,那會更好。

Filexct.cbb
Filedht.ryt
Filefht.vbf

我能找到的最簡單的方法是:

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

引用自:https://unix.stackexchange.com/questions/169261