如何爲當前文件夾中的每個文件/文件夾執行某個命令?對當前目錄中的每個文件執行命令
我已經開始將它作爲一個基本腳本,但這似乎只有在使用臨時文件時才起作用,而且我不太喜歡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