如何对当前文件夹中的每个文件/文件夹执行某个命令?
我已经开始将其作为基本脚本,但这似乎只在使用临时文件时有效,而且我不太喜欢这个想法。还有其他办法吗?
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/* |排序-n | sed "s#^[0-9]*##"| sed "s#^[^\./]*##"| xargs -L 1 杜 -sh | sed "s|$FOLDER||";
最佳答案
也许是 xargs,它为在标准输入上接收到的每一行附加参数重新调用在它之后指定的命令...
ls -1 $FOLDER | xargs du
但是,在这种情况下,为什么不……
du *
...?或者……
for X in *; do
du $X
done
(就个人而言,我使用 zsh,您可以在其中修改 glob 模式以仅查找常规文件,或仅查找目录,仅查找符号链接(symbolic link)等 - 我很确定 bash 中有类似的东西 - 如果您需要,可以挖掘细节那个)。
我是否遗漏了您的部分要求?
关于linux - 对当前目录中的每个文件执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142911/