我已经开始作为一个基本的脚本,但这似乎是唯一的工作时使用临时文件,我不喜欢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";
对于任何有兴趣的人,我想制作一个文件夹列表,按其大小sorting。 这是最后的结果
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 -sb $FOLDER/* | sort -n | sed "s#^[0-9]*##" | sed "s#^[^./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
在bash上用ssh运行本地机器上的命令
一种防止bash使用转义符parsing命令行w / out的方法
BASH:检查安装在系统上的内存数量是否完整
使用SFTP将图像从HTML表单传输到使用PERL / CGI.pm的远程Linux服务器
Bash的正则expression式不接受斜杠
awk +筛选日志文件
使用bash下载需要authentication的页面
如何使用Git存档在Windows上创build一个Tarball?
linux +打印linux版本(单个字符为5或6 ..等)
也许xargs,它会对stdin接收到的每一个额外的参数行重新调用指定的命令…
ls -1 $FOLDER | xargs du
但是,在这种情况下,为什么不呢?
du *
…? 要么…
for X in *; do du $X done
(就我个人而言,我使用zsh,在那里你可以修改glob模式只发现常规文件,或只有目录,只有符号链接等 – 我敢肯定有什么类似的bash – 可以挖掘细节,如果你需要的话)。
我是否缺少部分要求?
find命令可以让你为它找到的每个项目执行一个命令。 没有进一步的参数,它会找到当前目录中的所有文件和文件夹,如下所示:
$ find -exec du -h {} ;
{}部分是放置匹配的“变量”,这里是du的参数。 ; 结束命令。
这是怎么回事?
function process() { echo "Processing $1" } for i in * do process $i done
你可以把你想要完成的所有“工作”放在函数process 。 这将为您的当前目录。
解析ls输出来循环文件是没有用的。 Bash可以通过扩展来实现。
将du的结果存储在一个变量中,将其输出到一个文件中也是一个无用的变量。
我的建议是:
for i in ./tmp/Dirs/* do du "$i" >> "/tmp/Dirs1" done
这适用于当前目录中的每个文件:
do /usr/local/mp3unicode/bin/mp3unicode -s cp1251 --id3v2-encoding unicode "$file" done