Linux刪除破折號開頭的文件與Windows下批量去掉文件的隱藏屬性

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章