【问题标题】:Bash Script to list files within a directory [closed]Bash脚本列出目录中的文件[关闭]
【发布时间】:2014-01-13 21:33:47
【问题描述】:

我需要创建一个 bash 脚本,该脚本将发送一封电子邮件,其中包含特定目录中包含的文件。该脚本将获取目录位置。 (即./script.sh /backups/daily)。
脚本执行后,它将发送一封电子邮件,其中包含/backups/daily 中包含的列表文件。该电子邮件还将包含每个文件的大小(以 GB 为单位)以及文件的创建日期。
我对linux很陌生。有人能指出我正确的方向吗?

【问题讨论】:

    标签: mysql linux bash shell batch-file


    【解决方案1】:

    粗鲁,但应该这样做:

    #!/bin/bash
    ls -lh "$@" | mailx your@email.com -s "listing of $@"
    

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

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

    【讨论】:

      【解决方案2】:

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

      如果您需要每天自动运行,请使用crontab -e 使用 cron 设置作业。运行man crontab 了解更多信息。您编辑的 crontab 可能包含以下内容:

      #<Minute> <Hour> <Day_of_Month> <Month> <Day_of_Week> <Command>
      05 01 * * * ls -lh /backups/daily
      

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

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

      ls -lh /backups/daily | mail -s "backups contents for `date -I`" toaddress@example.com
      

      如果需要,可以定制 ls 的输出。 ls 输出的一个简单(并且过于简单化)过滤器是切断每行的左侧:

      $ ls -lh | cut -c32-
      
      98M Jan 14 14:01 meb.20140105-030003.img
      98M Jan 14 14:01 meb.20140106-030003.img
      $ 
      

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

      【讨论】:

      • 这很棒。但是您认为我可以如何调整输出以仅显示文件名、大小和创建日期。这就是我现在得到的:total 1.5T-rw-r--r-- 1 mysql mysql 769G Jan 5 13:55 meb.20140105-030003.img-rw-r--r-- 1 mysql mysql 755G Jan 12 13:49 meb.20140112-030003.img 但我想:meb.20140105-030003.img 769G Jan 5 13:55meb.20140112-030003.img 755G Jan 12 13:49
      • 仅使用 ls 选项,据我所知,不可能只获得大小和日期。因此,您需要过滤 ls 输出,或者从头开始编写脚本。一个简单的过滤器是将 ls(1) 的输出通过 cut(1) 传递到每行左侧的截断 - 我在上面的答案中添加了一个示例。其他过滤器可以使用 awk、sed、perl 等来完成。
      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2022-11-18
      • 1970-01-01
      • 2013-04-29
      • 2014-04-27
      • 2014-07-21
      相关资源
      最近更新 更多