使用 GNU find 递归创建具有随机内容的文件

Recursively create file with random content with GNU find

我的目的是快速创建如下目录树:

.
|-- dir1
|   |-- 01
|   |   `-- file_00
|   |       
|   |-- 02
|   |   `-- file_00
|   |       
|   |-- 03
|   |   `-- file_00
|   |       
|   |-- 04
|       `-- file_00
|           
`-- dir2
    |-- 01
    |   `-- file_00
    |       
    |-- 02
    |   `-- file_00
    |       
    |-- 03
    |   `-- file_00
    |      
    `-- 04
        `-- file_00

我完成了:

mkdir {dir1,dir2}
mkdir ./{dir1,dir2}/{01,02,03,04}
touch ./{dir1,dir2}/{01,02,03,04}/file_00

但是当我想追加一个运行dom号时,$RANDOM是运行dom就够了,给每个file_00我运行成问题。我试过了:

find . -type f -name 'file_00' -exec echo $RANDOM > {} \;

但是在工作目录上创建了一个名为 {} 的文件,其中相同的 运行dom 编号重复了与 find 匹配的次数(或者我假设).

如何给每个 file_00 写一个 运行dom 号码?


/dev/random 可用于 WSL

小改进,使用 mkdir -p,你只需要一个 mkdir 命令。

在 -exec 指令中调用 shell:

find . -type f \
       -name file_00 \
       -exec bash -c 'for file; do echo $RANDOM > "$file"; done' bash '{}' +

或者只是迭代 find 结果

find . -type f -name file_00 -print0 | while IFS= read -d '' -r filename; do 
    echo $RANDOM > "$filename"
done