別のフォルダのサブフォルダにある同じ名前のファイルを削除する方法は?

別のフォルダのサブフォルダにある同じ名前のファイルを削除する方法は?

フォルダ(folder_A)には10,000個のファイルがあります。 2番目のフォルダ(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

Folder_Aのファイルを繰り返して、各ファイルに対してそのディレクトリがFolder_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

おすすめ記事