我有一个文件夹,其中有大约 4k 个文件。其中一些文件以 aa?
或!
字符开头。我需要删除它们,但找不到可以执行此操作的表达式:
rm -f ./?*
只是删除所有内容。我可能可以使用grep
ls 并将其通过管道传输xargs
并将文件移动到另一个文件夹,但我希望有一种正确的方法可以做到这一点。需要有关?
和!
文件的帮助。
答案1
不需要任何花哨的东西。只需转义,?
这样它就不会被视为全局的一部分:
rm -f ./\?*
这也适用于!
:
rm -f ./\!*
或者一口气:
rm -f ./{\?,\!}*
更新
刚刚注意到您正在grep
建议ls
.我想让你注意这样一个事实你不应该解析 ls 的输出
答案2
就我而言,这些字符并不是真正的问号,而是显然无法在我的控制台中显示的 unicode 字符。
使用rm -i *
对我有用。如果你不想这样做,你也可以按inode删除,如下所述http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html。
要查找索引节点,请使用:
ls -il
然后做:
find . -inum [inode-number] -exec rm -i {} \;