【发布时间】:2010-11-10 09:25:09
【问题描述】:
如何为当前文件夹中的每个文件/文件夹执行某个命令?
我已经开始将此作为基本脚本,但这似乎仅在使用临时文件时才有效,我不太喜欢这个想法。有没有其他办法?
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||";
【问题讨论】:
-
它们是目录。不是文件夹。 ;)
-
查看我的回答 here 以了解一种方法,只需调用一次
du而不是每个文件两次。您不需要for循环。如果需要,您可以将--max-depth=1添加到其中的du,并且您可以添加您的sed "s|$FOLDER||"。