昨天去打印店打印材料,结果中毒了,所有的文件都隐藏了,生成了一堆快捷方式。回来之后,我顺手把它查到Linux的机器上,想删掉那些诡异的文件。下面是这个过程中,遇到的问题。
1、无法删除‘-’开头的文件
本来看到有好多windows下.lnk结尾的快捷方式文件,所以,直接简单粗暴的用rm -rf *.lnk 删除,结果报错。为了说明情况,我下面做了一个例子,目录中只有一个名为“-a.txt”的文件,执行下面的命令,报错信息如下:
rm *.txt rm: invalid option -- 'a' Try `rm ./-a.txt' to remove the file `-a.txt'. Try `rm --help' for more information.
根据提示,可以知道,要想删除‘-’开头的文件,可以采用rm ./-a.txt的方式,或者可以查看rm --help,下面是rm --help中摘录的部分信息。
To remove a file whose name starts with a `-', for example `-foo', use one of these commands: rm -- -foo rm ./-foo从中可以看出,要想删除这样的文件,也可以采用rm -- -foo的形式。实际上,这种方式更加方便,我直接rm -- *.lnk就成功把所有的文件都给删掉了。
至于为什么会这样?如果你尝试创建一个‘-’开头的文件就知道了。
$ touch -a.txt touch: invalid option -- '.' Try `touch --help' for more information.不难看出,系统将‘-’理解为是一个选项的打头标志,所以会提示不支持选项‘.’。你可能会纳闷,为什么不提示不支持选项a呢?因为a正好是touch的一个选项,意思是只修改文件的访问时间。^_^
2、批量修改文件的隐藏属性
接下来将U盘查到windows的电脑上,发现所有的文件都被设置成了隐藏属性,并且没法通过属性修改,具体如下图:
下面就是命令行发挥作用的时候了,windows命令行中有一个attrib命令,在cmd中运行“help attrib”,可以得到关于它的帮助,如下:
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I] [drive:][path][filename] [/S [/D] [/L]] + 设置属性。 - 清除属性。 R 只读文件属性。 A 存档文件属性。 S 系统文件属性。 H 隐藏文件属性。 I 无内容索引文件属性。 X 无清理文件属性。 V 完整性属性。 [drive:][path][filename] 指定 attrib 要处理的文件。 /S 处理当前文件夹 及其所有子文件夹中的匹配文件。 /D 也处理文件夹。 /L 处理符号链接和 符号链接目标的属性不难想象,之所以通过系统界面没法直接修改隐藏属性,肯定是病毒将文件添加了系统文件和隐藏文件的属性,这里我们将它去掉就可以了,用命令“attrib -H -S /S /D *”即可。其实,这里的S的意思是Sytem,表示系统文件熟悉ing,而H代表Hide,表示隐藏文件属性,非常好记。从这里可以看出,命令操作相对于界面的简洁性。这或许也是windows更新了这么多带一值保留cmd的原因吧^_^
Linux删除破折号开头的文件与Windows下批量去掉文件的隐藏属性
原文地址:http://blog.csdn.net/xia7139/article/details/41123445