小编Yan*_*ann的帖子

如何以随机顺序删除所有一组文件?

我有一组文件,所有文件都以约定命名file_[number]_[abcd].bin(其中 [number] 是驱动器 0 大小范围内的数字,以 MB 为单位)。即有file_0_a.binfile_0_b.binfile_0_c.binfile_0_d.bin,然后0将成为1等等。

文件数在运行时根据分区的大小计算出来。我需要以伪随机方式删除所有已创建的文件。在我需要能够指定的大小块中,即有 1024 个文件的地方,删除 512,然后删除另一个 512。

我目前有以下功能可以执行此操作,我将其称为所需的次数,但它会逐渐不太可能找到存在的文件,直到它可能永远不会完成。显然,这有点不太理想。

我可以用来以随机顺序删除所有文件的另一种方法是什么?

deleteRandFile() #$1 - total number of files
{
    i=$((RANDOM%$1))
    j=$((RANDOM%3))
    file=""

    case $j in
    0)
        file="${dest_dir}/file_${i}_a.bin";;
    1)
        file="${dest_dir}/file_${i}_b.bin";;    
    2)
        file="${dest_dir}/file_${i}_c.bin";;
    3)
        file="${dest_dir}/file_${i}_d.bin";;
    esac

    if ! [[ -f $file ]]; then
        deleteRandFile $1
    else
        rm $file
    fi

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我试图以随机顺序删除,以便我可以尽可能多地分割文件。这是脚本的一部分,首先用 1MB 文件填充驱动器,然后删除它们,一次 1024 个,然后用 1 个 1GB 文件填充“空白”。冲洗并重复,直到你有一些非常碎片化的 1GB 文件。

bash shell-script files

7
推荐指数
2
解决办法
1708
查看次数

标签 统计

bash ×1

files ×1

shell-script ×1