フォルダーがあり、/home/userA/folderA
このフォルダーには多くのファイル、フォルダー、サブフォルダーが含まれています。 特定の名前を持つすべてのファイルを削除したいですdata.txt
。glass.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
ベスト、レフ