从特定目录中删除具有特定名称的文件和文件夹

从特定目录中删除具有特定名称的文件和文件夹

我有一个文件夹,/home/userA/folderA该文件夹包含许多文件、文件夹和子文件夹。我想要删除所有具有特定名称的文件data.txtglass.txt我还想删除任何match带有其所有内容的文件夹。如果您能提供任何有关如何执行此操作的建议,我将不胜感激。

答案1

您可以删除 子目录中的文件和文件夹folderA

要删除文件,请运行:

find /home/userA/folderA/* -type f \( -name "data.txt" -or -name "glass.txt" \) -delete 

并删除文件夹match

find /home/userA/folderA/* -depth -name "match" -type d -exec rm -rf "{}" \; 

答案2

详细(python)选项:

#!/usr/bin/env python3

import os
import shutil

# --------------------------------------------------------
reorg_dir = "/path/to/your/folder"
remove_files = ("data.txt", "glass.txt")
remove_dirs = ("match")
# ---------------------------------------------------------

for root, dirs, files in os.walk(reorg_dir):
    for name in files:
        if name in remove_files:
            os.remove(root+"/"+name)
    for dr in dirs:
        if dr in remove_dirs:
            shutil.rmtree(root+"/"+dr)

将脚本复制到一个空文件中,设置目录,如果您想要/需要:编辑要删除的文件和文件夹列表,将其保存为 reorg.py 并通过以下命令运行它:

python3 /path/to/reorg.py

答案3

您可以简单地运行以下命令(请小心并仔细检查所有内容,因为这是不可逆的!)这将删除其中包含单词 data 或 glass 的所有 .txt 文件。

sudo rm -rf /home/userA/folderA/*data*.txt

sudo rm -rf /home/userA/folderA/*glass*.txt

您可以使用locate命令找到任何名为match的文件夹:

locate match

找到路径后,只需对整个文件夹执行上述命令即可

sudo rm -rf /path/to/match

最好的,列夫

相关内容