微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对当前目录中的每个文件执行命令

我如何执行当前文件夹中的每个文件/文件夹的某个命令?

我已经开始作为一个基本的脚本,但这似乎是唯一的工作时使用临时文件,我不喜欢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的页面

自动检测文件更改并通过S3进行同步

如何使用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐