web-dev-qa-db-ja.com

ランダムな名前で複数のファイル/ディレクトリを作成するにはどうすればよいですか?

異なる名前と異なる拡張子を持ついくつかのファイルを作成しようとしています。たとえば、次の名前と拡張子を持つ3つのファイルを作成するとします。

File001.000
File002.001
File003.002

またはアルファベットの拡張子付き:

File001.A
File002.B
File003.C

また、ランダムな名前と拡張子の付いたファイルを作成できるとよいでしょう。

Filexct.cbb
Filedht.ryt
Filefht.vbf
3
αғsнιη

私が見つけることができる最も簡単な方法は:

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
4
terdon

guaranteeを変更したい場合は、mktempを調べてください。

$ mktemp 
/tmp/tmp.r8FumWPhn5
$ mktemp XXXXXXXX.tmp
Pu4Ii6Sf.tmp
2
l0b0

私はファイルとディレクトリをランダムな名前と拡張子で作成する簡単な方法を見つけました:

Random extでランダムファイルを作成するには、次のコマンドを使用します。

$ 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

最後に、複数のディレクトリを作成する場合は、-dオプションを指定してmktempを使用します。

mktemp -d XXX.$(mktemp -u XXX)
2
αғsнιη