Shell 具有特定扩展名的文件的磁盘使用情况
我想记录文件夹中所有rpm文件的磁盘使用情况。下面的脚本列出了扩展名为.rpm的文件的磁盘使用情况Shell 具有特定扩展名的文件的磁盘使用情况,shell,sh,Shell,Sh,我想记录文件夹中所有rpm文件的磁盘使用情况。下面的脚本列出了扩展名为.rpm的文件的磁盘使用情况 for name in $(find . -type d -maxdepth 1) do dirname=$(basename "$name") du -a $dirname/*.rpm done 但是,如果innerfolder不包含.rpm文件,则会收到错误消息 “du:无法访问`err/*.rpm':没有这样的文件或目录” 我不想避免此错误消息。我尝试了grep-v并检查了文件扩展名条件
for name in $(find . -type d -maxdepth 1)
do
dirname=$(basename "$name")
du -a $dirname/*.rpm
done
但是,如果innerfolder不包含.rpm文件,则会收到错误消息
“du:无法访问`err/*.rpm':没有这样的文件或目录”
我不想避免此错误消息。我尝试了grep-v并检查了文件扩展名条件,如下所示
for name in $(find . -type d -maxdepth 1)
do
dirname=$(basename "$name")
count=`ls -1 dirname *.rpm 2>/dev/null | wc -l`
if [ $count != 0 ]; then
echo $count;
du -a $dirname/*.rpm
fi
done
但是,我无法避免错误消息。非常感谢您在这方面的任何帮助。提前谢谢。还有图像的PFA。
查找-regex'.*\.rpm'-print0|du--files0 from=--a
的find
选项和-print0
的du
选项用于避免文件名中出现空格问题-files0 from
- 正则表达式与整个路径匹配,例如
,而不仅仅是/dir1/subdir2/rpm1.rpm
,因此如果修改它,请将其考虑在内rpm1.rpm
查找-regex'.*\.rpm'-print0|du--files0 from=--a
的find
选项和-print0
的du
选项用于避免文件名中出现空格问题-files0 from
- 正则表达式与整个路径匹配,例如
,而不仅仅是/dir1/subdir2/rpm1.rpm
,因此如果修改它,请将其考虑在内rpm1.rpm
,因为您只需要在当前目录中获取子目录
您可以将此简单的用于循环:
for f in */*.rpm; do
du -a "$f"
done
您甚至不需要在此处查找,因为您只需要在当前目录中获取子目录
您可以将此简单的用于循环:
for f in */*.rpm; do
du -a "$f"
done
你这样做很迂回
正如@anubhava所指出的,如果您只关心当前目录的直接子目录,或者只关心两个层次的深度,那么在您的特定场景中并不需要find
如果您想查找所有子目录中任意嵌套级别的所有*.rpm
文件,我将直接使用find
。如果需要512字节块,请使用%b
而不是%k
find . -name '*.rpm' -printf '%k\n' | awk '{s+=1} END { print s }'
如果要查看每个文件及其使用的磁盘空间
find . -name '*.rpm' -printf '%k %p\n'
你这样做很迂回
正如@anubhava所指出的,如果您只关心当前目录的直接子目录,或者只关心两个层次的深度,那么在您的特定场景中并不需要find
如果您想查找所有子目录中任意嵌套级别的所有*.rpm
文件,我将直接使用find
。如果需要512字节块,请使用%b
而不是%k
find . -name '*.rpm' -printf '%k\n' | awk '{s+=1} END { print s }'
如果要查看每个文件及其使用的磁盘空间
find . -name '*.rpm' -printf '%k %p\n'
您好,此命令将返回count。我想列出带有空间(du)的rpm文件。不,它是匹配文件使用的磁盘空间的总和。请使用printf“%n%k\n”
并在不使用Awk管道的情况下尝试它。我想分别列出文件和使用的磁盘空间。如果删除管道,它会列出文件大小而不显示文件名我不确定是否理解您的意思;但是我更新了答案,希望至少能把你推向正确的方向。哎呀,我的坏,%p
不是%n
。嗨,这个命令将返回count。我想列出带有空间(du)的rpm文件。不,它是匹配文件使用的磁盘空间的总和。请使用printf“%n%k\n”
并在不使用Awk管道的情况下尝试它。我想分别列出文件和使用的磁盘空间。如果删除管道,它会列出文件大小而不显示文件名我不确定是否理解您的意思;但是我更新了答案,希望至少能把你推向正确的方向。哎呀,我的坏,%p
不是%n
。嗨,谢谢你的回复。这不适用于递归列表。我的意思是,如果一个x文件夹包含两个rpm文件,而一个y文件夹包含一个rpm文件,那么它将无法工作。它将在当前目录的所有子目录中找到*.rpm
文件。你用的是什么shell?使用*/*.rpm*/*/*.rpm
进入两个文件夹深度。我在gash bash和ubuntu终端中进行了检查,错误消息也来了。你也不需要进行循环du-a*.rpm*/*.rpm*/*/*.rpm
Hi,谢谢回复。这不做递归列表。我的意思是,如果一个x文件夹包含两个rpm文件,而一个y文件夹包含一个rpm文件,那么它将无法工作。它将在当前目录的所有子目录中找到*.rpm
文件。你用的是什么shell?使用*/*.rpm*/*/*.rpm
进入两个文件夹深度。我在gash bash和ubuntu终端中进行了检查,错误消息也来了。你也不需要进行循环du-a*.rpm*/*.rpm*/*/*.rpm
如何在文件夹名称以xyz开头的文件夹中递归搜索.rpm文件。如何在文件夹名称以xyz开头的文件夹中递归搜索.rpm文件。