특정 디렉터리에서 특정 이름을 가진 파일 및 폴더 삭제

특정 디렉터리에서 특정 이름을 가진 파일 및 폴더 삭제

이 폴더 /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

그리고 자세한 (파이썬) 옵션은 다음과 같습니다:

#!/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

찾기 명령을 사용하여 match라는 폴더를 찾을 수 있습니다.

locate match

경로를 찾으면 전체 폴더에 대해 위의 명령을 수행하십시오.

sudo rm -rf /path/to/match

최고야, 레프

관련 정보