在unix中查找文件名中具有特殊字符的文件

时间:2015-08-14 19:47:31

标签: shell unix sh ksh

问:我正在使用unix平台上的脚本,我必须找到目录中所有文件,这些文件从现在开始提前8小时出现。

我正在使用以下命令按照上述条件检索文件:

find . name "*.dat" -mmin -480

但文件名本身中有少量文件具有特殊字符(双问号)??“并使用上面的命令,名称中包含??的文件,分成两部分分为两行。

例如:

file name : aabb??cc.dat

在上面的命令运行后,结果如下:

$./aabb

$cc.dat

($这里是unix命令提示符) 有人可以建议在上面的命令或正确的方法中进行更正以处理此异常。

1 个答案:

答案 0 :(得分:0)

此命令将显示find正在考虑这些文件,就像其他文件一样:

find . -name "*.dat" -mmin -480 -exec \
  ksh -c 'c=1
          for file do
              printf "file #%d is \"%s\"\n" $c "$file"
              c=$((c+1))
          done ' sh {} +

如果find显示某些文件名分为两行,那只是因为他们的名字有一个嵌入的新行。这很奇怪,但它们仍然是有效的文件名。