異なる名前と異なる拡張子を持ついくつかのファイルを作成しようとしています。次の名前と拡張子を持つ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)