特定のディレクトリから特定の名前のファイルとフォルダを削除します

特定のディレクトリから特定の名前のファイルとフォルダを削除します

フォルダーがあり、/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

次のコマンドを実行するだけです (元に戻すことはできないため、注意してすべてを再確認してください)。これにより、.txt ファイルで、data または glass という単語が含まれるファイルがすべて削除されます。

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

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

一致する名前のフォルダーは、locate コマンドを使用して見つけることができます。

locate match

パスを見つけたら、フォルダ全体に対して上記のコマンドを実行するだけです。

sudo rm -rf /path/to/match

ベスト、レフ

関連情報