53

New to scripting. How can I write code to create multiple files (a.txt, b.txt, ... , z.txt)?

Thanks.

1
  • 1
    Do you want to put anything in those files?
    – Cascabel
    Commented Nov 10, 2010 at 3:41

8 Answers 8

129

One command to create 26 empty files:

touch {a..z}.txt

or 152:

touch {{a..z},{A..Z},{0..99}}.txt

A small loop to create 152 files with some contents:

for f in {a..z} {A..Z} {0..99}
do
    echo hello > "$f.txt"
done

You can do numbered files with leading zeros:

for i in {0..100}
do
    echo hello > "File$(printf "%03d" "$i").txt"
done

or, in Bash 4:

for i in {000..100}
do
    echo hello > "File${i}.txt"
done
9
for i in {1..200}; do touch any_prefix_here${i}; done

where i is the count. So example files are employee1 employee2 etc... through to emplyee200

4

To create files with names a.txt and b.txt simple pass names to touch

touch a.txt b.txt
2
  • This ... is not arbitrary? ;) Commented May 3, 2019 at 18:13
  • Make sense to fix description :)
    – vovan
    Commented May 6, 2019 at 7:17
3
echo Hello > a.txt
echo World > b.txt

for i in a b c d e f g; do
    echo $i > $i.txt
done

If you want more useful examples, ask a more useful question...

1
  • 5
    Not everyone is a bash (or shell) expert. It is so easy to do everything with executables it can be easy to forget about built-in flow control tools. Commented Nov 9, 2017 at 6:56
2

You can create a file using $ cat > a.txt. If you need to have a file with specific content, type $ echo content > filename.

1

to have some content in file use dd

for i in {1..N};
do
dd if=/dev/urandom of=./path/file${i} bs=1M count=1;
done
1

Instead of using filenames a..z i prefer using numbers.

create a script like this (createNfiles.sh)

#!/bin/bash

if [ "$1" = "" ]; then
  echo "Usage: $0 <number of files to create>"
  exit 1
fi

now=`date '+%Y-%m-%d_%H%M%S'`
prefix="${now}_myFilePrefix"
echo "creating $1 files"
echo "now=$now"

for i in $(seq 1 $1); do file="${prefix}_${i}.log"; echo "creating $file"; touch $file; done

To execute it (create 100 files for example)

./createNfiles.sh 100

1

tl;dr:

echo CONTENT | tee PATH…

I had to address the content issue to create minimal valid Nix files, which can't be empty:

$ docker run --interactive --rm --tty --volume="${HOME}/dev/root:/etc/nixos" nixos/nix
[…:/# cd /etc/nixos
[…]:/etc/nixos# echo {} | tee common.nix hardware-configuration.nix host.nix
{}
[…]:/etc/nixos# cat common.nix
{}
[…]:/etc/nixos# cat hardware-configuration.nix
{}
[…]:/etc/nixos# cat host.nix
{}

Not the answer you're looking for? Browse other questions tagged or ask your own question.