Категория: Bash
808
41111111111Rating 4.00 (1 Vote)

В тестовых целях, обычно бывает так - нужно взять один какой-нибудь файл, размножить его, ну или нагенерировать кучу разных файлов, например сделать 100 копий одного файла в одной папке можно так:

for i in $(seq 1 100); do cp test.file test$i.file; done

Перед этим в папке можно создать тот самый / любой тестовый файл:

touch test.file

В итоге будет вот такой вот результат:

$ ls
...
test10.file   test26.file  test41.file  test57.file  test72.file  test88.file
test11.file   test27.file  test42.file  test58.file  test73.file  test89.file
test12.file   test28.file  test43.file  test59.file  test74.file  test8.file
...

Генерация рандомных имен

Имена файлов можно сделать рандомными:

for i in $(seq 1 100); do cp test.file $RANDOM.file; done

Результат:

$ ls
...
10865.file  17064.file  22444.file  29105.file  32436.file  6382.file
11601.file  17156.file  22644.file  29681.file  32558.file  7015.file
11998.file  17633.file  23074.file  30057.file  3384.file   7051.file
...

Можно немножко усложнить, например так:

for i in $(seq 1 100); do cp test.file $(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 33 | xargs).file; done

Результат:

$ ls
...
0owtj24dqkuIpQlBOFmE6AYKozNU4T8PF.file
19Ky6iq3BFay6mgddPFXt02ivcSRhU9EQ.file
2O9W64g46bm8jUa9jZRRIU6PPtk4zjpai.file
...

Генерация имен со временем

Можно использовать время и мили и наносекунды в именах:

for i in $(seq 1 100); do cp test.file $(date +%Y-%m-%d.%H-%M-%S-%s%N).file; done

Результат:

$ ls
...
2019-03-22.15-02-41-1553245361935663879.file
2019-03-22.15-02-41-1553245361940978181.file
2019-03-22.15-02-41-1553245361944719590.file
...

Генерация UUID имен

for i in $(seq 1 100); do cp test.file $(uuidgen).file; done

Результат:

$ ls
...
00071fd9-a6a7-4cac-bbd7-401caf48bfd7.file
014db7eb-ce42-4c2e-bd03-b09ab7622795.file
02e5c35e-7370-4767-a497-c70eb2aa0a71.file
...

Создание каталогов с файлами, генерация файлов

Как пример, создать 10 каталогов:

mkdir -p FOLDER{1..10}

Создать каталоги с файлом внутри:

mkdir -p FOLDER{1..10} | touch FOLDER{1..10}/test.file

Добавить в имена файлов рандомизацию, как в предыдущих примерах:

mkdir -p FOLDER{1..10} | touch FOLDER{1..10}/$(uuidgen).file
mkdir -p FOLDER{1..10} | touch FOLDER{1..10}/$(uuidgen){1..10}.file

Результат:

ls ./*
...

./FOLDER2:
...
2dd6f85c-43c0-4de0-8633-d73562c6e9645.file
3d7590f4-a08a-4534-a736-d72bf4c5ac973.file
70f92a0e-71c2-4628-be96-7ed98e1fc7048.file
...

./FOLDER3:
...
3a6f64f5-f162-4695-8f57-dade7e2a7b154.file
5b287577-1be0-42a9-864d-87da6a527d5f7.file
7b0e50e4-4764-4a7b-9b63-7712452730a7.file
...