我想从根目录中填写随机字节ALL文件RECURSIVELLY。只有文件,文件夹将保持未开封
我不想删除文件,只需用随机字节填充它们
在我的研究中,单个文件的填充命令可能类似于:
dd if=/dev/random of=target-files bs=1M
要以递归方式查找所有文件,我应该使用:
find . -name "* .*"
我的问题是:
通过加入这两个命令可以实现我的目标吗? (管他们?怎么样?)
还有另一种更简单的方法可以达到相同的效果吗?
感谢您的帮助; - )
答案 0 :(得分:1)
您可以尝试将查找结果传递给while循环,并将dd / dev / udrandom传递到每个文件中。
$ find myfolder -type f |while read fd; do dd if=/dev/urandom of=$fd bs=1M count=1;done
如果你想保留文件大小,可以在找到1k块计数时进行一些计算,并在dd中作为args传递。
$ find myfolder -type f|while read fd; do FSIZ=`stat -c %s $fd`; CNT=`expr $FSIZ / 1024`;dd if=/dev/urandom of=$fd bs=1k count=$CNT;done
答案 1 :(得分:0)
查找+ xargs + dd + wc会这样做。
find / -type f -print0 | xargs -0 -Ifilename sh -c 'dd if=/dev/urandom of="filename" bs=`wc -c "filename" | cut -d" " -f1` count=1'
工作原理:
答案 2 :(得分:0)
第三种方法:)
find / -type f -printf "%s\t%p\n" | while read size name ; do dd if=/dev/urandom of="${name}" bs=1c count=${size}; done
准备等待很长时间:}
答案 3 :(得分:0)
我爱 dd (真的:我喜欢它!);但是,在这种情况下,你可以使用 shred ,专为实现这样的目的而设计。 它是 GNU coreutils 包的一部分(安装在[几乎]所有Linux系统上)。
find rootdirectory -type f -print0 | xargs --null --max-args=1 shred --force --iterations=4 --random-source=/dev/urandom --verbose