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

Bash中如何获取含空格路径下最大尺寸MKV文件的完整路径?

解决带空格路径下获取最大MKV文件路径的问题

你的脚本问题出在cut -d ' ' -f2的使用上:当文件路径包含空格时,cut会把每个空格都当作分隔符,导致只能提取到路径中第一个空格前的部分。另外脚本里的$folder="$1"多了个多余的$,应该修正为folder="$1"。

下面提供两种可靠的解决方法:

方法一:用awk替代cut提取完整路径

利用awk删除开头的文件大小部分,保留剩余的完整路径(无论路径包含多少空格):

folder="$1"
m2ts=$(find "$folder" -type f -iname "*.mkv" -printf '%s %p\n' | sort -nr | head -1 | awk '{sub(/^[0-9]+ /, ""); print}')
echo "$m2ts"

awk的sub(/^[0-9]+ /, "")会匹配开头的数字(文件大小)加空格,将其替换为空,剩下的就是完整的路径。最后echo时要给变量加双引号,避免路径空格被拆分。

方法二:用空字符作为分隔符(更安全)

因为Linux文件路径中不可能包含空字符,所以用\0作为分隔符处理带特殊字符的路径最稳妥,需要配合支持空字符的工具选项(-z):

folder="$1"
m2ts=$(find "$folder" -type f -iname "*.mkv" -printf '%s\0%p\0' | sort -z -nr | head -z -n1 | xargs -0 -n2 | awk '{print $2}')
echo "$m2ts"
  • find用%s\0%p\0输出文件大小和路径,用空字符分隔
  • sort -z和head -z处理空字符分隔的内容
  • xargs -0 -n2将内容按每两个元素(大小+路径)分组
  • 最后用awk提取路径部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:14