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

我有一个文件夹 /home/userA/folderA,这个文件夹中包含许多文件、文件夹和子文件夹。我想要做的是删除所有具有特定名称 data.txtglass.txt 的文件。我还想要删除名为 match 的任何文件夹及其内容。如果您能提供如何实现这一目标的任何建议,我将不胜感激。
3个回答

您可以删除 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 "{}" \; 

出现了错误:“find: invalid expression; I was expecting to find a ')' somewhere but did not see one.” - Tak
尝试执行以下命令:find /home/userA/folderA/* -depth -name "data.txt" -type f -exec rm {} \;find /home/userA/folderA/* -depth -name "glass.txt" -type f -exec rm {} \; - Nathan Adams
搞定了 :) 谢谢!你会更新你的回答来标记为已解决吗? - Tak

而且还有冗长的(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

你只需运行以下命令(请小心并仔细检查,因为此操作不可逆!)这将删除所有包含单词"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
祝好, Lev

2请注意:定位功能并非实时的。它使用一个数据库,如果匹配的文件尚未被存入其中,那么该命令将无法显示相关结果。 - Rinzwind
谢谢你的回答!关于match文件夹的问题,我的困扰是我希望在这个文件夹中有超过100个名为match的文件夹 :) 这就是为什么我寻求一个简单的解决方案的原因 :) - Tak
看一下Nathan提供的解决方案,对于这个匹配问题非常有效! - levlaz
如果你真的需要的话,只有在必要的情况下才应该使用sudo,而在这里并不需要。 - evilsoup