如何在文本文件中识别文件名与文件夹并分别输出提示信息?
Bash脚本实现文件/文件夹识别提示
基于你提供的读取文件行的基础脚本,我们可以通过文件系统检测命令来判断每行路径是文件还是文件夹,具体实现如下:
完整实现脚本
#!/bin/bash while read -r line do # 跳过空行 [[ -z "$line" ]] && continue if [[ -f "$line" ]]; then echo "检测到普通文件:$line" elif [[ -d "$line" ]]; then echo "检测到文件夹:$line" else echo "$line 既不是有效文件也不是文件夹" fi done < filenames.txt
关键说明
- 用
while read -r line替代cat ... | while read line:避免不必要的管道操作,同时-r参数防止反斜杠被转义,保证路径读取准确。 [[ -z "$line" ]] && continue:跳过文件中的空行,避免无效判断。[[ -f "$line" ]]:判断路径是否为普通文件(包含文本、二进制等常规文件,不包含目录、链接等)。[[ -d "$line" ]]:判断路径是否为文件夹/目录。- 新增默认分支:处理既不是文件也不是目录的情况(比如不存在的路径、符号链接等),增强脚本健壮性。
注意事项
- 给脚本添加执行权限:
chmod +x your_script.sh - 路径包含空格或特殊字符时,
"$line"的双引号必须保留,避免路径被拆分成多个参数。 - 若需要识别符号链接,可以添加
[[ -L "$line" ]]的判断分支,按需调整逻辑。
内容的提问来源于stack exchange,提问作者Anjali
相关产品推荐
相关产品推荐

