自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在 Linux 命令行中刪除指定擴(kuò)展名的文件

系統(tǒng) Linux
怎樣根據(jù)文件擴(kuò)展名來刪除多個(gè)文件呢?今天我們來介紹幾種方法。

我們大家都知道,在 Linux 中刪除文件可以使用 rm 命令:

rm [option] filename

不過,使用上述命令刪除文件的時(shí)候,需要知道確切的文件名。那么怎樣根據(jù)文件擴(kuò)展名來刪除多個(gè)文件呢?今天我們來介紹幾種方法。

方法1:使用 rm 命令按擴(kuò)展名刪除文件

作為演示,假如我們要?jiǎng)h除擴(kuò)展名為 gif 的所有文件,可以這樣做:

rm *.gif

不過一般情況下,直接刪除是有風(fēng)險(xiǎn)的,在刪除之前最好先檢查一下:

ls *.gif

通常情況下,我在刪除文件的時(shí)候會(huì)做如下操作:

$ ls
1.gif 2.gif 3.gif 4.gif a.jpg b.png c.webp

$ ls *.gif
1.gif 2.gif 3.gif 4.gif

$ rm -v *.gif
removed '1.gif'
removed '2.gif'
removed '3.gif'
removed '4.gif'

$ ls
a.jpg b.png c.webp

此外,還可以同時(shí)刪除多個(gè)擴(kuò)展名的文件,如下:

$ ls
f1.txt f2.txt f3.txt f4.txt not-txt-file.pdf random.txt

$ rm -v *.txt *.pdf
removed 'f1.txt'
removed 'f2.txt'
removed 'f3.txt'
removed 'f4.txt'
removed 'not-txt-file.pdf'

$ ls
random.txt

在使用 rm 命令的時(shí)候,可以使用交互式的 -i 選項(xiàng),該選項(xiàng)要求在刪除文件之前進(jìn)行確認(rèn)。不過這個(gè)適用于刪除單個(gè)或者幾個(gè)文件,如果批量刪除文件,這個(gè)選項(xiàng)就不方便了。

像上面的刪除操作,它具體是怎樣工作的呢?答案是使用的通配符。

簡而言之,通配符是用于匹配特定模式的特殊字符。以下是一些常用的通配符:

通配符

用途

*

匹配一個(gè)或多個(gè)匹配項(xiàng)

?

匹配單個(gè)

[] (方括號(hào))

指定匹配范圍

^

從匹配中排除

在上面的刪除例子中,我們使用了 * 通配符,這表示它可以匹配任何字符。當(dāng)你使用 *.gif 的時(shí)候,它實(shí)際表示的是與 .gif 組合的任何字符,也就是說,它提供了所有以 gif 為擴(kuò)展名的文件。

* 和擴(kuò)展名之間的點(diǎn)很重要?

有些人在使用通配符的時(shí)候,會(huì)這樣寫:*gif,這是不對(duì)的。* 和擴(kuò)展名之間的點(diǎn) . 至關(guān)重要。

看下面的例子,假如我們使用 *gif 來刪除文件,看看會(huì)怎樣。

$ ls
1.gif 2.gif 3.gif 4.gif definately-not-a-gif jpg-not-gif not-a-gif

$ rm -v *gif
removed '1.gif'
removed '2.gif'
removed '3.gif'
removed '4.gif'
removed 'definately-not-a-gif'
removed 'jpg-not-gif'
removed 'not-a-gif'

可以看到,除了刪除所有 gif 文件外,它還刪除了文件名中帶有字符串 gif 的文件,盡管它不是文件的擴(kuò)展名。所以,刪除帶有通配符或正則表達(dá)式的文件時(shí),應(yīng)確保盡可能精確。

方法2:使用find命令遞歸刪除具有特定擴(kuò)展名的文件?

rm 命令僅刪除當(dāng)前目錄中的文件。即使使用遞歸選項(xiàng),它也不會(huì)從子目錄中刪除文件。

要遞歸刪除具有特定擴(kuò)展名的文件,可以組合find命令和rm命令??聪旅娴睦?,在子目錄中也有 .gif 文件:

$ ls *
file_0.gif file_z.txt not-a-gif not-a-txt

dir1:
file_1.gif file_a.txt not-a-gif not-a-txt

dir2:
file_2.gif file_b.txt not-a-gif not-a-txt

dir3:
file_3.gif file_c.txt not-a-gif not-a-txt

dir4:
file_4.gif file_d.txt not-a-gif not-a-txt

要?jiǎng)h除文件,可以使用??find和exec命令??,如下所示:

find . -type f -name "*.gif" -exec

以下是上述命令的輸出:

$ find . -type f -name "*.gif" -exec rm -v {} \;
removed './dir1/file_1.gif'
removed './dir3/file_3.gif'
removed './dir2/file_2.gif'
removed './file_0.gif'
removed './dir4/file_4.gif

下面我們拆開來說明下:

  • find 后面的點(diǎn) . 表示在當(dāng)前目錄中搜索;
  • -name 選項(xiàng)指定文件的名稱,我們可以在其中使用正則表達(dá)式;
  • -exec 選項(xiàng)用于對(duì) find 命令的結(jié)果執(zhí)行 bash 命令;
  • {} 大括號(hào)充當(dāng)匹配文件結(jié)果的占位符,因此 rm-v {} 將刪除find命令找到的文件;
  • 最后,分號(hào)結(jié)束 shell 執(zhí)行的命令(exec之后的命令),并使用反斜杠 \,以便正確轉(zhuǎn)義分號(hào)。

在下面的文章中可了解 find 命令的更多例子:

??關(guān)于 find 命令的15個(gè)超級(jí)有用的例子??

使用 find 命令處理多個(gè)擴(kuò)展名文件?

上面顯示的命令不包括查找具有多個(gè)擴(kuò)展名的文件,如:rm *.gif *.txt

要實(shí)現(xiàn)這一點(diǎn),可以使用 -o 參數(shù),它表示邏輯或運(yùn)算符,但需要用括號(hào)括起來,且必須使用反斜杠 \ 來轉(zhuǎn)義括號(hào)。

$ ls *
file_0.gif file_z.txt not-a-gif not-a-txt

dir1:
file_1.gif file_a.txt not-a-gif not-a-txt

dir2:
file_2.gif file_b.txt not-a-gif not-a-txt

dir3:
file_3.gif file_c.txt not-a-gif not-a-txt

dir4:
file_4.gif file_d.txt not-a-gif not-a-txt

$ find . \( -name "*.gif" -o -name "*.txt" \) -exec rm -v {} \;
removed './dir1/file_1.gif'
removed './dir1/file_a.txt'
removed './dir3/file_3.gif'
removed './dir3/file_c.txt'
removed './dir2/file_2.gif'
removed './dir2/file_b.txt'
removed './file_0.gif'
removed './file_z.txt'
removed './dir4/file_d.txt'
removed './dir4/file_4.gif'

在這里,我們可以看到所有擴(kuò)展名為 txt 的文件和擴(kuò)展名為 gif 的文件都被遞歸刪除。

大家可能會(huì)覺得對(duì)每個(gè)文件擴(kuò)展名類型單獨(dú)使用 find 命令會(huì)更容易,實(shí)際上也是這樣的...

責(zé)任編輯:龐桂玉 來源: TIAP
相關(guān)推薦

2023-02-07 09:49:26

Linux命令行合并文件

2009-08-25 09:26:57

Windows 7查看文件擴(kuò)展名

2023-03-17 11:33:18

Linux

2022-10-14 19:30:29

Linux

2019-08-15 15:00:31

Linux命令行PDF

2023-03-21 09:31:30

Linux命令行文件夾

2009-10-21 10:13:19

Linux文件擴(kuò)展名

2014-05-04 10:58:18

Linux命令行Linux發(fā)行版

2018-04-25 10:46:05

Linux命令行日歷

2010-04-27 12:32:05

2015-02-10 10:05:11

LinuxLinux命令

2022-11-08 09:38:18

Linux命令行刪除文件

2015-09-02 15:47:05

命令行fdupesLinux

2022-10-18 14:52:36

2022-11-18 12:47:51

LinuxAWS命令行工具

2018-03-29 15:58:55

Linux命令行編輯器

2015-12-16 16:01:13

2022-04-11 06:03:24

FdupesLinux命令行工具

2015-10-19 17:16:10

天氣預(yù)報(bào)命令行Linux

2014-09-16 10:09:40

Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)