我有一堆目录都包含文件/SubDir1/SubDir2/File
,我希望在与某个模式匹配的目录下查看每个文件的内存。我该怎么做?
到目前为止,我有ls -l | grep "pattern*
来获取目录列表,但我坚持这一点。
答案 0 :(得分:2)
通过“每个文件的内存”,我猜你的意思是文件大小。
find
命令可以做得更好:
find . -name "pattern*" -exec du -b {} \;
这将打印您的树状中名为File
的每个文件的文件大小以及文件路径。
答案 1 :(得分:2)
您应该使用find
命令:
find . -name 'pattern*' -printf '%s\t%p\n'
答案 2 :(得分:0)
Bash陷阱#1:Don't parse ls
您可以使用find
或shell模式:
for i in pattern*; do
cat "$i"
done
您的一个特殊问题是获取一组匹配目录下的所有文件的列表,您可以使用更复杂的模式来实现:
for i in pattern*/*; do
if [ -f "$i" ]; then
cat "$i"
fi
done
答案 3 :(得分:0)
除了SirDarius所说的内容之外,您还可以使用-R
选项ls
来获取递归列表。
像ls -lRh | grep "pattern"
之类的东西应该做你想要的。