如何使用Bash查找目录下最近新增文件并将文件名存入变量
Bash 查找指定目录最新文件并赋值变量实现方法
基础实现(兼容绝大多数Linux发行版)
直接使用以下代码即可实现需求:
#!/bin/bash # 替换为你要查找的目标文件夹路径 TARGET_DIR="/path/to/your/target/folder" # 查找最新的普通文件,赋值给变量latest_file latest_file=$(ls -tp "$TARGET_DIR" | grep -v '/$' | head -n 1) # 测试输出结果 echo "最新新增的文件是:$latest_file"
参数说明
ls -tp:-t参数按文件修改时间从新到旧排序,-p参数会给所有目录结尾追加/标记,方便后续过滤grep -v '/$':过滤掉结尾带/的条目,仅保留普通文件,排除目录head -n 1:取排序后的第一条结果,即最新的文件
进阶说明
- 如果需要包含隐藏文件,将
ls -tp修改为ls -atp即可,新增的-a参数会显示目录下的隐藏文件 - 如果需要严格按**创建时间(而非修改时间)**排序,GNU Coreutils环境(绝大多数Linux发行版默认带)可以使用以下命令:
latest_file=$(find "$TARGET_DIR" -maxdepth 1 -type f -printf "%C@ %f\n" | sort -nr | head -n 1 | cut -d' ' -f2-)
- 空目录判断:如果目标文件夹可能为空,可以增加判空逻辑避免后续报错:
if [ -z "$latest_file" ]; then echo "目标目录下未找到任何普通文件" exit 1 fi
内容的提问来源于stack exchange,提问作者Itay Alush
相关产品推荐
相关产品推荐

