如何删除不同文件夹中子文件夹的同名文件?

如何删除不同文件夹中子文件夹的同名文件?

我在一个文件夹 (folder_A) 中有 10k 个文件。第二个文件夹 (folder_B) 包含 100k 子文件夹。某些子文件夹与文件夹 A 中的文件具有相同的名称。以下是示例:

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

当folder_B中存在同名子文件夹时,我需要从folder_A中删除文件,以便folder_A将仅包含名称不存在于folder_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

相关内容