You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Bash脚本需求:列出主目录内容及生成带日期的文本文件

解决Bash脚本生成空文件问题并实现需求

我来帮你搞定这个问题,先拆解下你原脚本里的几个问题:

  • ls /home/user/*/ 这个命令是只列出/home/user下所有子目录里的内容,如果user目录下没有子目录,或者子目录为空,这行就不会有输出
  • 你创建了带日期的文件$today.list.txt,但根本没把ls的结果写入这个文件,只是用touch创建了空文件,所以它自然是空的!

正确的脚本(实现两项功能)

下面是能完成你需求的脚本,我会逐行解释:

#!/bin/bash
# 定义主目录路径,方便后续修改
HOME_DIR="/home/user"
# 获取当前日期,把冒号换成横线(冒号在部分文件系统里属于非法文件名字符,避免报错)
TODAY=$(date '+%d-%m-%Y')
# 列出主目录下所有文件和文件夹,同时写入带日期的文件
ls -l "$HOME_DIR" > "${TODAY}.list.txt"

脚本细节说明:

  • 用$HOME_DIR变量存储主目录,后续要改路径只需要修改这一行,更灵活
  • ls -l "$HOME_DIR" 会列出/home/user目录下所有的文件和文件夹(包括根目录下的内容,不是子目录里的),然后通过重定向>写入到带日期的文件中
  • 如果想同时在终端输出内容,又写入文件,可以改用tee命令:
    ls -l "$HOME_DIR" | tee "${TODAY}.list.txt"
    

单独将当前日期写入文本文件的脚本

如果只是需要把当前日期写入文件,有几种简单方式:

方式1:直接覆盖写入文件

#!/bin/bash
date '+%d-%m-%Y' > date.txt

执行后date.txt里就会只有当前日期的内容。

方式2:追加到文件末尾(不覆盖原有内容)

#!/bin/bash
# 追加带时间的日期到日志文件
date '+%d-%m-%Y %H:%M:%S' >> date_log.txt

用>>会把日期追加到文件最后,不会覆盖原有内容,我额外加了小时分钟秒的格式,你可以根据需求调整。

额外小提示

  • 尽量用$(command)代替反引号`command`,前者可读性更好,也支持嵌套使用
  • 给变量和文件名加双引号,避免路径或文件名里有空格时出现错误

内容的提问来源于stack exchange,提问作者Jokamutta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:27:33