다른 폴더의 하위 폴더에 있는 동일한 이름의 파일을 삭제하는 방법은 무엇입니까?

다른 폴더의 하위 폴더에 있는 동일한 이름의 파일을 삭제하는 방법은 무엇입니까?

폴더(folder_A)에 10,000개의 파일이 있습니다. 두 번째 폴더(folder_B)에는 100,000개의 하위 폴더가 포함되어 있습니다. 일부 하위 폴더는 폴더 A의 파일과 이름이 동일합니다. 예는 다음과 같습니다.

ls ./folder_A
aaa.txt bbb.txt ccc.txt
ls ./folder_B
aaa/ bbb/ ddd/ xxx/

폴더_B에 동일한 이름의 하위 폴더가 있는 경우 폴더_A에서 파일을 제거해야 합니다. 그러면 폴더_A에는 다음과 같이 폴더_B에 없는 이름을 가진 파일만 포함됩니다.

ls folder_A
ccc.txt

Bash에서 이 작업을 수행할 수 있는 방법이 있나요? 감사해요

답변1

폴더_A의 파일을 반복하여 각 파일에 대해 해당 디렉터리가 폴더_B에 존재하는지 확인할 수 있습니다. 매개변수 확장을 사용하면 .txt 확장자와 경로를 제거할 수 있습니다.

for f in folder_A/*.txt ; do
    d=${f%.txt}           # Remove .txt at the end.
    d=folder_B/${d##*/}   # Remove everything before the last /.
    if [[ -d $d ]] ; then
        rm "$f"
    fi
done

관련 정보