【问题标题】:Unix shell: how to deal with filename with space while looping through the directory?Unix shell:如何在遍历目录时处理带空格的文件名?
【发布时间】:2016-01-28 03:42:22
【问题描述】:

假设一个目录下有两个文件

file1.jpg 
file 2.jpg

这是我循环文件的代码:

for i in $dir/*
do 
   type=`exiftime -tg $i | cut -c-5`
done

我遇到的问题是当循环查看“文件 2.jpg”时,由于空间“文件”和“2.jpg”,它会将其视为两个文件。如何让它将文件视为一个文件?

【问题讨论】:

  • 总是引用你的变量以防止分词(例如"$i")。是的,引号命令替换中是允许的(并且是必要的)(例如$(....)或与反引号相同)

标签: linux unix sh


【解决方案1】:

$i 括在双引号中:"$i"

【讨论】:

  • 也引用$dirfor i in "$dir"/*。您不能引用星号,因为这会抑制通配符扩展。
  • 感谢您的帮助。我有另一个问题,当我运行 exiftime -tg | cut -c-10 在无效图片上,它返回整个消息而不是前十个字符。为什么剪切在这里不起作用?
  • @user116064:如果您还有其他问题,请发布另一个问题。
猜你喜欢
  • 1970-01-01
  • 2012-02-08
  • 2019-07-16
  • 2023-03-22
  • 1970-01-01
  • 2015-12-24
  • 2013-12-25
  • 2022-04-07
相关资源
最近更新 更多