如何在当前文件夹中为每个文件/文件夹执行特定命令?
我已经使用这个基本脚本开始了,但似乎它只能在使用临时文件时才会工作,而我不太喜欢这个想法。还有其他方法吗?
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||";
du
而不是*每个文件调用两次来完成此操作。您不需要使用for
循环。如果需要,可以在其中添加--max-depth=1
到du
中,并添加您的sed "s|$FOLDER||"
。 - Dennis Williamson