国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Linux Shell > 正文

Shell中刪除某些文件外所有文件的3個方法

2020-07-27 19:12:54
字體:
供稿:網(wǎng)友

我的一位同事曾經(jīng)問過我這樣一個問題:在 Linux 下,如何 刪除目錄中除某些文件之外的所有文件?當時,我告訴他可 以通過模式匹配的方法解決。但其實,除此之外,還有其他 的方法,正所謂“條條大路通羅馬”。讓我們來逐一看看。

假設要刪除 ~/Downloads 目錄中除 *.iso 和 *.zip 外的 所有文件,那么在 bash 中可以按以下方法處理:

方法1:模式匹配法

復制代碼 代碼如下:

shopt -s extglob # 確認開啟 extglob 選項
cd ~/Downloads
rm -v !(*.iso|*.zip)
!(pattern list) 的作用是匹配除 pattern list 之外 的文件。

方法2:設置變量法

在 bash 中,GLOBIGNORE 可用來設置要忽略的模式匹配 文件,多個模式通過 : 分隔。

復制代碼 代碼如下:

cd ~/Downloads
export GLOBIGNORE=*.zip:*.iso
rm -v *
unset GLOBIGNORE

方法3:find 搜索法

熟悉 find 的朋友想必知道,find 的威力異常強大,因此 利用它也可解決此問題。

復制代碼 代碼如下:

cd ~/Downloads
find . -type f -not /( -name '*.zip' -or -name '*.iso' /) -delete

不過還是要提醒大家,rm 操作是非常危險的,切勿炫技,如果你不放心,那么可以先老老實實的逐個或分批刪除,也要比事后找回方便的多。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西乌珠穆沁旗| 萨嘎县| 巫山县| 张家口市| 西峡县| 永寿县| 乡宁县| 黑水县| 平舆县| 海宁市| 雅安市| 定襄县| 奉化市| 海兴县| 额敏县| 拜泉县| 青海省| 厦门市| 高青县| 新巴尔虎右旗| 金沙县| 临湘市| 柘荣县| 潼关县| 铁力市| 错那县| 葫芦岛市| 岑巩县| 香港 | 延庆县| 阳西县| 徐州市| 平昌县| 普兰县| 合阳县| 天全县| 怀安县| 乐至县| 玉树县| 锦屏县| 林芝县|