这是我的代码
read -r directory
read -r size _ <<<"$( du -sb directory )"
size2m="$( numfmt --from=iec 2M )"
size1m="$( numfmt --from=iec 1M )"
if [[ ${size} -ge ${size2m} ]]
then echo "High" readlink -f ${directory} >> ~/ListOfBigDirs.txt
elif [[ ${size} -le ${size1m} ]]
then echo "Small"
elif [[ ${size} -le ${size2m} ]]
then echo "Medium"
fi
但是当我输入目录名称时,它显示 du: 无法访问“目录”:没有这样的文件或目录,但实际上我的计算机上有一个我输入的目录和文件。我不知道如何解决这个问题。
du: cannot access 'directory': No such file or directory
答案1
首先,您需要引用变量,$directory
而不仅仅是directory
。
此外,如果您du
在系统目录(如/proc
和)上运行/sys
,您可能经常会遇到文件和目录创建和删除的速度太快以至于它们丢失并出现相同的错误消息的情况。
对我来说最好的解决方案是将错误消息重定向du
到空设备。
$( du -sb "$directory" 2> /dev/null )
但是请注意,报告的这些目录的大小也没有任何意义。因此,最好以某种方式完全排除这些目录。
如果这与系统目录无关,只需确保正确引用变量。