【发布时间】:2014-06-11 14:15:52
【问题描述】:
我想进入一个目录并递归删除所有包含? 的文件名。
我wgeted 了一个网站,并下载了index.html?p=46 形式的文件。为什么会这样。
我试过了:
rm -R *?*
失败:删除所有常规文件
rm -R *\?*
同样失败:No such file of directory
【问题讨论】:
我想进入一个目录并递归删除所有包含? 的文件名。
我wgeted 了一个网站,并下载了index.html?p=46 形式的文件。为什么会这样。
我试过了:
rm -R *?*
失败:删除所有常规文件
rm -R *\?*
同样失败:No such file of directory
【问题讨论】:
试试这个:find . -iname '*\?*' -exec rm {} \;
$ ls
xxy x?y
$find . -iname '*\?*'
./x?y
$ find . -iname '*\?*' -exec rm {} \;
$ ls
xxy
至于为什么会这样,你 wget 的网站有指向 index.html 的链接,传递了这些参数,你(大概)告诉 wget 镜像它。
【讨论】:
? 映射到单个字符。你需要逃避它:
$ touch a a?a
$ ls *?*
a a?a
$ ls *\?*
a?a
【讨论】: