如何删除除Linux中的一个特定文件的文件夹中的所有文件
让我们说文件夹中有100多个文件。
除了一个或者少数特定文件之外,我们想删除所有这些。
你会怎么做?
我们可以复制要保留的文件,并将其保存在其他位置,然后删除文件的其余文件或者整个文件夹。
我们可以使用单行命令删除除一个特定文件或者某些文件中的所有文件中的所有文件。
删除除一个特定文件中的文件夹中的所有文件
让我们根据以下示例。
我们有一个名为'test'的文件夹,其中包含10个文本文件。
$ls test/
示例输出:
file10.txt file2.txt file4.txt file6.txt file8.txt file1.txt file3.txt file5.txt file7.txt file9.txt
现在,我想删除除file10.txt之外的此文件夹中的所有内容。
可能有许多命令执行此操作。
但是这些是我所知道的五个命令。
首先,转到测试文件夹:
$cd test/
并运行以下命令:
$rm -f !(file10.txt)
或者,只需使用:
$rm !(file10.txt)
上面的命令将删除除file10.txt文件之外的测试文件夹中的所有文件。
我们还可以使用find命令删除所有内容但特定于一切。
以下命令将删除除File10.txt之外的当前文件夹中的所有文件(i.e在我们的案例中)。
$find . ! -name file10.txt -delete
如上所述,测试文件夹包含相同类型的文件:.txt文件。
如果文件夹具有不同类型的文件,你会怎么做.mp3,.doc,.pdf等文件?
在文件夹中保持特定类型的文件也很容易删除其他所有文件。
让我们说我们的测试文件夹包含三个.txt文件,三个.mp3文件,三个.doc文件和一个.pdf文件。
$ls test/
示例输出:
total 0 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file10.pdf -rw-r--r-- 1 sk users 0 Mar 22 15:51 file1.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file2.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file3.txt -rw-r--r-- 1 sk users 0 Mar 22 15:51 file4.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file5.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file6.mp3 -rw-r--r-- 1 sk users 0 Mar 22 15:51 file7.doc -rw-r--r-- 1 sk users 0 Mar 22 15:51 file8.doc -rw-r--r-- 1 sk users 0 Mar 22 15:51 file9.doc
与我们在上述输出中一样,我在测试文件夹中有四种不同类型的文件(PDF,TXT,MP3,DOC)。
我想保留具有.doc扩展的文件并删除其他所有内容。
以下是我如何执行此操作:
$cd test/
$rm !(*.doc)
现在,让我们使用命令列出文件内容:
$ls
示例输出:
file7.doc file8.doc file9.doc
上面的命令删除文件夹中的所有内容,除了具有扩展名.doc的文件。
同样,我们可以保留两个或者多种特定类型的文件并删除其他一切。
例如,以下命令将保留包含.doc和.mp3扩展的文件。
$rm !(*.doc|*.mp3)
现在,我们将看到未删除MP3和DOC文件。
$ls
示例输出:
file4.mp3 file5.mp3 file6.mp3 file7.doc file8.doc file9.doc
这些只是十种不同的文件。
只是图像你有数百个文件。
找到每个文件类型并手动删除它们会更难。
这个技巧只在一两秒钟内完成工作。
使用这些命令时请非常小心。
删除文件前仔细检查目录路径,以避免意外删除重要文件。