国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 海宁市| 潞西市| 房山区| 华安县| 莆田市| 紫云| 成都市| 嘉黎县| 新绛县| 旺苍县| 阿合奇县| 呼和浩特市| 亚东县| 平乡县| 岑巩县| 正安县| 濮阳县| 阿拉善右旗| 太湖县| 库车县| 中牟县| 灯塔市| 兴义市| 手机| 兴化市| 比如县| 越西县| 舟曲县| 盘锦市| 麻栗坡县| 宣化县| 通渭县| 连州市| 南陵县| 兴隆县| 连江县| 武夷山市| 古浪县| 卓尼县| 靖边县| 安国市|