使用GNU查找

时间:2018-05-28 17:23:36

标签: bash find windows-subsystem-for-linux

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

.
|-- 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

但是当我想追加一个随机数时,$RANDOM足够随机,对每个file_00我遇到了问题。我试过了:

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

但是在工作目录中创建了一个名为{}的文件,其中重复的随机数与find的匹配次数相同(或者我假设)。

我如何为每个file_00写一个随机数?

/dev/random可在WSL上找到

1 个答案:

答案 0 :(得分:5)

小改进,使用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