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

如何将txt内的文件路径列表传给ls --full-time获取文件时间戳?

解决方案

该需求可以实现,以下两种都是可直接在Git Bash中运行的单条命令,完美适配带空格、特殊字符的文件路径,不需要额外写脚本:

  • 方案1(执行效率更高,推荐):
    命令:xargs -d '\n' ls --full-time < tmp.txt
    说明:-d '\n'参数指定xargs仅以换行符作为参数分隔符,只要你的tmp.txt中每行存储一个路径,就不会出现路径被拆分的问题,自动把所有路径一次性传给ls命令执行。执行后可对比wc -l tmp.txt的输出和ls命令结果的行数,确认所有路径都被正常处理。
  • 方案2(兼容性更强,适配所有类Unix环境):
    命令:while IFS= read -r f; do ls --full-time "$f"; done < tmp.txt
    说明:逐行读取tmp.txt的路径,IFS=避免行首/行尾的空格被自动截断,-r避免路径中的反斜杠被转义,每条路径都会完整传入ls命令执行。

原方案失效原因说明

  1. 第一种循环写法存在两处问题:一是for f in tmp.txt实际读取的是"tmp.txt"这个字符串而非文件内容,就算修改为for f in $(cat tmp.txt),for循环也会默认按空格、制表符、换行符分割内容,把带空格的路径拆分成多个无效参数;二是语法缺失分号,即使路径不含空格也无法正常执行。
  2. 第二种方案中sed给路径添加的引号,在命令替换$(!!)展开时会被识别为普通字符,不会起到包裹路径的作用,因此带空格的路径依然会被拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:09:05