如何为当前文件夹中的每个文件/文件夹执行某个命令?对当前目录中的每个文件执行命令
我已经开始将它作为一个基本脚本,但这似乎只有在使用临时文件时才起作用,而且我不太喜欢ideea。有没有其他方法?
FOLDER=".";
DIRS=`ls -1 "$FOLDER">/tmp/DIRS`;
echo >"/tmp/DIRS1";
while read line ; do
SIZE=`du "$FOLDER$line"`;
echo $SIZE>>"/tmp/DIRS1";
done < "/tmp/DIRS";
任何有兴趣,我想使文件夹列表,通过它们的大小进行排序。下面是最终的结果
FOLDER="$1";
for f in $FOLDER/*; do
du -sb "$f";
done | sort -n | sed "s#^[0-9]*##" | sed "s#^[^\./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
导致du -sb $FOLDER/* | sort -n | sed "s#^[0-9]*##" | sed "s#^[^\./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
他们是目录。不是文件夹。 ;) – 2010-11-10 09:30:26
请参阅我的回答[here](http:// serverfault。com/q/62411/1293#62522),通过每个文件调用'du'而不是*两次来实现这一点。你不需要'for'循环。如果需要的话,你可以在'du'中加入'--max-depth = 1',你可以添加你的'sed'| $ FOLDER ||“'。 – 2010-11-10 15:08:29
@丹尼斯威廉姆森:很好的答案,并没有看到'awk'。 – Quamis 2010-11-11 14:41:38