Skip to main content

Генерация нескольких сотен тестовых файлов в цикле (Linux)

Генерация

  • С небольшой датой (501 файл):
for i in {1..501}; do echo $(date +%T_%s) > "${i}.txt" ; echo "$i"; done
# Sample content:
# 12:22:07_1769505327
  • С произвольной неповторяющейся датой (501 файл):
for i in {1..501}; do echo "$(date +%T_%s && openssl rand -base64 24)" > "${i}.txt" ; echo -e "Generated \e[1;34m${i}.txt\e[0m"; done
# Sample content:
# 12:22:07_1769505727
# vCN9MgYoOe1PLQiitXEGhSWqaCcFwqba
  • С уникальными именами и данными (501 файл):
for i in {1..501}; do fname="$(openssl rand -hex 32)"; echo -e "$(date +%T_%s)\n$fname" > "${fname}${i}.txt" ; echo -e "Generated \e[1;34m${fname}${i}.txt\e[0m"; done
# Sample content:
# 12:28:20_1769506100
# 48a2a31880bb565ca40baa3147a35c70786dfcca689de6f453690dd8e9f24d30

image.png

Создание архива

Создание архива одной командой (все txt-файлы в этой директории):

zip -r archive_$(date +%F).zip ./*.txt 

image.png

Бонус: подсчет кол-ва файлов в директории

Чтобы посчитать кол-во файлов в директории, можно использовать:

ls -1 | wc -l

Но с этой командой есть нюанс: она считает вообще все записи, включая директории. Чтобы посчитать только файлы с расширением .txt можно использовать GREP:

ls -1 | grep '.txt' | wc -l

Разница видна здесь:

image.pngimage.png