昨天去打印店打印材料,結果中毒了,所有的文件都隱藏了,生成了一堆快捷方式。回來之後,我順手把它插到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的原因吧^_^