如何为当前文件夹中的每个文件/文件夹执行某个命令?
我已经开始使用它作为基本脚本,但这似乎只在使用临时文件时才有效,而且我真的不喜欢这个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";
Run Code Online (Sandbox Code Playgroud)
对于任何感兴趣的人,我想制作一个文件夹列表,按其大小排序.这是最终结果
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||";
Run Code Online (Sandbox Code Playgroud)
这导致 du -sb $FOLDER/* | sort -n | sed "s#^[0-9]*##" | sed "s#^[^\./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
Ton*_*roy 32
也许是xargs,它为stdin上收到的每个额外的参数行重新调用之后指定的命令...
ls -1 $FOLDER | xargs du
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,为什么不......
du *
Run Code Online (Sandbox Code Playgroud)
...?要么...
for X in *; do
du $X
done
Run Code Online (Sandbox Code Playgroud)
(就个人而言,我使用zsh,你可以修改glob模式,只能找到说常规文件,或只有目录,只有符号链接等 - 我很确定在bash中有类似的东西 - 如果你需要,可以挖掘细节).
我错过了你的部分要求吗?
Dan*_*ler 10
该find命令还允许您为找到的每个项执行命令.没有进一步的参数,它将在当前目录中找到所有文件和文件夹,如下所示:
$ find -exec du -h {} \;
Run Code Online (Sandbox Code Playgroud)
该{}部分是放置匹配的"变量",此处作为参数du.\;结束命令.
| 归档时间: |
|
| 查看次数: |
31583 次 |
| 最近记录: |