首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列出目录中的文件的Bash脚本

列出目录中的文件的Bash脚本
EN

Stack Overflow用户
提问于 2014-01-14 05:33:47
回答 2查看 979关注 0票数 0

我需要创建一个bash脚本,该脚本将发送一封包含在特定目录中的文件的电子邮件。该脚本将获取目录位置。(即./script.sh /backups/daily)。

执行脚本后,它将发送一封电子邮件,其中包含/backups/daily中包含的列表文件。电子邮件还将包括每个文件的大小(以GB为单位)和创建文件的日期。

我对linux是个新手。有人能给我指个方向吗?

EN

回答 2

Stack Overflow用户

发布于 2014-01-14 05:38:07

粗糙,但这应该可以做到:

代码语言:javascript
复制
#!/bin/bash
ls -lh "$@" | mailx your@email.com -s "listing of $@"

我在这里使用了mailx,但是正确的邮件命令取决于您的系统,它可能需要更多的标志,例如用于身份验证。它可以是mailsendmail,或者其他什么。

ls -lh中,-l表示包含大小和日期的长列表。-h用于文件大小的“人类可读”格式,例如,您将看到78M作为大小,而不是81883042 (字节)。

票数 6
EN

Stack Overflow用户

发布于 2014-01-14 05:50:49

如果您需要的是目录内容的列表,包括大小和修改时间,那么ls -lh /backups/daily可能就是您所需要的。

如果您需要将其自动化以每天运行,可以使用crontab -e来设置一个带有cron的作业。运行man crontab获取更多信息。您编辑的crontab可能包含以下内容:

代码语言:javascript
复制
#<Minute> <Hour> <Day_of_Month> <Month> <Day_of_Week> <Command>
05 01 * * * ls -lh /backups/daily

由于默认情况下,cron会将作业的输出通过邮件发送给用户,这将在每晚1:05通过电子邮件向您发送列表

您可以将此清单的输出通过管道传输到一个mail命令中,以便发送给其他人。在命令行上编辑并尝试,然后当它工作时,将它添加到您的crontab中。

代码语言:javascript
复制
ls -lh /backups/daily | mail -s "backups contents for `date -I`" toaddress@example.com

如果需要,可以定制ls的输出。ls输出的一个简单(和过于简单)的过滤器是砍掉每一行的左侧:

代码语言:javascript
复制
$ ls -lh | cut -c32-

98M Jan 14 14:01 meb.20140105-030003.img
98M Jan 14 14:01 meb.20140106-030003.img
$ 

这过于简单了,因为左侧部分的宽度(在我的示例中为32)将根据用户名和组名而变化。如果这些对你来说是恒定的,那么调整这个数字,过于简单的就足够了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21101823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档