Jan*_*Jan 4 size find directory-structure files
我在文件夹 /media/data/Selbstgemacht 中有家庭照片和电影,我想找到所有照片的大小。在 /media/data 我使用find Selbstgemacht -type f -iname '*.jpg' -exec du -ch '{}' +
它返回 5,1GB。
但是,如果我进入文件夹“Selbstgemacht”并使用find . -type f -iname '*.jpg' -exec du -ch '{}' +
它会返回 7,0GB。
然后我比较了 find 的输出以检查它们是否找到相同的文件:
来自父文件夹find Selbstgemacht -type f -iname '*.jpg' -printf '%P\n' |sort > test1.txt
来自子文件夹
find . -type f -iname '*.jpg' -printf '%P\n' |sort > ../test2.txt
这些文件是相同的,因此两个 find 命令都会找到完全相同的文件,这让我认为 du 报告的大小差异一定是由于其他原因造成的。
这里的原因究竟是什么?
系统信息:
find ... -exec cmd {} +
将cmd
根据需要执行多次,以免破坏传递给命令的参数大小的限制。
使用时find . -exec du {} +
,文件列表的大小比使用时小find verylongdirname -exec du {} +
。
所以很可能find verylongdirname
会运行du
比find .
一个更多的命令。你最后看到的总数是上次运行的总数du
,它不包括所有文件(之前会有更多的总数,你可以通过管道命令grep 'total$'
来确认。